๐๏ธ [Medium] ์๋ฐ ๊ฐ๋ฐ์๊ฐ ํผํด์ผ ํ๋ 11๊ฐ์ง ์ค์ (2)
7. ๊ฒ์ ์ ๋ฐ์ดํฐ ์กด์ฌ ์ฌ๋ถ๋ฅผ ํ์ธํ์ง ์๊ธฐ Bad Practice: ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ map์ id๊ฐ ์๋์ง ๋ฏธ๋ฆฌ ํ์ธํฉ๋๋ค. ์กด์ฌํ์ง ์๋๋ค๋ฉด null ๊ฐ์ ๋ฐํํ๊ธฐ ๋๋ฌธ์ ๋ฏธ๋ฆฌ ์ฒดํฌํ๋ ๊ฒ์ ๋ถํ์ํฉ๋๋ค. public static String findNameById(Map idNameMap, int id) { if(idNameMap.containsKey(id)) { return idNameMap.get(id); } else { return "Unknown"; } } Good Practice: ์ฆ์ map์์ ๊ฐ์ ธ์จ ํ null์ธ์ง ์๋์ง ์ฒดํฌํ์ฌ ์กด์ฌ ์ฌ๋ถ๋ฅผ ํ์ธํฉ๋๋ค. public static String findNameById(Map idNameMap, int id) { String name = idNameMap.get(id); if(name != null) { return idNameMap.get(id); } else { return "Unknown"; } } ย 8. ๋ฐฐ์ด์ ํจ์จ์ ์ธ ๋ณํ Bad Practice:ย - ๋ฆฌ์คํธ์ ์ฌ์ด์ฆ๊ฐ ๋จผ์ ๊ณ์ฐ๋ ํ ์๋ก์ด ๋ฐฐ์ด์ด ์์ฑ๋ฉ๋๋ค. - ํฐ ์ปฌ๋ ์ ์ผ ์๋ก ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค. List stringList = new ArrayList(); stringList.add("apple"); stringList.add("banana"); stringList.add("orange"); String[] array = stringList.toArray(new String[stringList.size()]); Good Practice: - ๋น ๋ฐฐ์ด๊ณผ ํจ๊ป toArray ๋ฉ์๋๊ฐ ํธ์ถ๋ฉ๋๋ค. - ๋ฆฌ์คํธ์ ํฌ๊ธฐ๋ฅผ ๊ณ์ฐํ ํ์๊ฐ ์์ผ๋ฉฐ toArray ๋ฉ์๋๊ฐ ๋ด๋ถ์ ์ผ๋ก ๋ฐฐ์ด ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ ์ ์์ผ๋ฏ๋ก ์ฑ๋ฅ์ด ํฅ์๋๊ณ ์ฝ๋๊ฐ ๊นจ๋ํด์ง๋๋ค. List stringList = new ArrayList(); stringList.add("apple"); stringList.add("banana"); stringList.add("orange"); String[] array = stringList.toArray(new String[0]); ย 9. ๊ธฐ๋ณธ ๋ฉ์๋ ์ฌ์ฉ Bad Practice: logError์ ๊ฐ์ ์๋ก์ด ๋ฉ์๋๋ฅผ ์ธํฐํ์ด์ค์ ์ถ๊ฐํด์ผ ํ๋ ๊ฒฝ์ฐ ๋ชจ๋ ๊ตฌํ ํด๋์ค๋ฅผ ์์ ํด์ผ ํ๋ฏ๋ก ์ฝ๋ ๊ด๋ฆฌ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.ย interface Logger { void log(String message); } class FileLogger implements Logger { @Override public void log(String message) { System.out.println("Logging to file: " + message); } } class ConsoleLogger implements Logger { @Override public void log(String message) { System.out.println("Logging to file: " + message); } } Good Practice: Logger ์ธํฐํ์ด์ค๊ฐ ๊ธฐ๋ณธ ๋ฉ์๋๋ฅผ ์ ์ํ์ฌ ์ด ๋ฉ์๋๋ ๋ก๊ทธ ์ค๋ฅ์ ๋ํ ๊ธฐ๋ณธ ๊ตฌํ์ ์ ๊ณตํฉ๋๋ค. ๊ตฌํ ํด๋์ค๋ ์์ ํ ํ์ ์์ด ์ด ๊ธฐ๋ณธ ๊ตฌํ์ ์๋์ผ๋ก ์์ํฉ๋๋ค. interface Logger { default void log(String message) { System.out.println("Logging to file: " + message); } } class FileLogger implements Logger { @Override public void log(String message); } class ConsoleLogger implements Logger { @Override public void log(String message); } ย 10. Date/Time API ์ฌ์ฉ Bad Practice: ๋ ๊ฑฐ์ Date ํด๋์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค. - ์ด ํด๋์ค๋ ๋ณํ ๊ฐ๋ฅ์ฑ, ๋ฉ์๋ ๋ช ํ์ฑ ๋ถ์กฑ ๋ฑ ๋ค์ํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. - getYear(), getMonth()์ ๊ฐ์ ์ด ํด๋์ค์ ๋๋ถ๋ถ์ ๋ฉ์๋๋ ์ฌ์ฉ๋์ง ์์ต๋๋ค. import java.util.Date; public class DateUtil { public static void main(String[] args) { Date currentDate = new Date(); System.out.println("Current date: " + currentDate); } } Good Practice: Date/Time API๋ฅผ ์ฌ์ฉํฉ๋๋ค. import java.time.LocalDate; public class DateUtil { public static void main(String[] args) { LocalDate currentDate = LocalDate.now(); System.out.println("Current date: " + currentDate); } } ย 11. ์ ๋ค๋ฆญ ์ฌ์ฉ Bad Pracice: ๋ค๋ฅธ ํ์ ์ ๋ฐ์ดํฐ๊ฐ ๋ฆฌ์คํธ์ ํผํฉ๋์ด ์ ์ฅ๋ฉ๋๋ค. ๋ฐํ์ ์๋ฌ๋ฅผ ์ ๋ฐํ ์ ์์ต๋๋ค. ArrayList list = new ArrayList(); list.add(10); list.add("Hello"); Good Practice: ํ์ ์์ ์ฑ์ ๋ณด์ฅํ๋ ์ ๋ค๋ฆญ์ ์ฌ์ฉํฉ๋๋ค. ArrayList list = new ArrayList(); list.add(10); // list.add("Hello"); // Compile-time error: incompatible types ๋ฒ์ญ: [https://ducktopia.tistory.com/125] ์ถ์ฒ