Community

๐Ÿ•Š๏ธ [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] ์ถœ์ฒ˜

์•Œ๋ฆผ

์•Œ๋ฆผ์ด ์—†์Šต๋‹ˆ๋‹ค