Community

๐Ÿ•Š๏ธ Java์˜ 10๊ฐ€์ง€ ๋ชจ๋ฒ” ์‚ฌ๋ก€

๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋“ค์ด ๋งŽ์ด ์„ ํƒํ•˜๊ณ  ๋˜ ๊ทธ๋งŒํผ ์‹ ๋ขฐํ•˜๋Š” ์–ธ์–ด, Java. ๊ทธ๋ ‡๊ธฐ์— ๋ชจ๋ฒ” ์‚ฌ๋ก€๋“ค๋„ ๊ทธ๋งŒํผ ์ฃผ๋ชฉ ๋ฐ›์„ ์ˆ˜ ๋ฐ–์— ์—†์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ์—๋Š” 10๊ฐœ์˜ Java ๋ชจ๋ฒ” ์‚ฌ๋ก€๋“ค์„ ๋ฒˆ์—ญํ•œ ๊ธ€์„ ์š”์•ฝํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 1๏ธโƒฃ SOLID ์›์น™์„ ๋”ฐ๋ฅธ๋‹ค. ๊ฐ์ฒด ์ง€ํ–ฅ ์„ค๊ณ„์˜ ์›์น™์œผ๋กœ, ๊ฝค๋‚˜ ๋จธ๋ฆฌ์— ์•ˆ๋“ค์–ด ์™€์„œ ์ธํ„ฐ๋ทฐ ์ค€๋น„ ํ•  ๋•Œ ๋งŽ์ด๋„ ์™ธ์› ์Šต๋‹ˆ๋‹ค ^^; ์—ญ์‹œ๋‚˜ ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ๋‹ค ์žŠ์–ด๋ฒ„๋ฆฌ๊ฒŒ ๋˜๋„ค์š”. 2๏ธโƒฃ DRY & KISS DRY - ๋™์ผํ•œ ์ฝ”๋“œ๋ฅผ ๋ฐ˜๋ณตํ•˜์ง€ ๋งˆ๋ผ KISS - ์ฝ”๋“œ๋ฅผ ๋˜๋„๋ก์ด๋ฉด ๊ฐ„๋‹จํ•˜๊ณ  ๋‹จ์ˆœํ•˜๊ฒŒ ๋งŒ๋“ค์–ด๋ผ 3๏ธโƒฃ ์ ์ ˆํ•œ ๋„ค์ด๋ฐ ๊ทœ์น™์„ ์‚ฌ์šฉ ๊ฐœ์ธ์ ์œผ๋กœ ์ฝ”๋“œ ์งค ๋•Œ ๊ฐ€์žฅ ์–ด๋ ต๋‹ค๊ณ  ๋А๋ผ๋Š” ๋„ค์ด๋ฐ์ž…๋‹ˆ๋‹ค. Java์—์„œ๋Š” CamelCase๋ฅผ ์ง€ํ–ฅํ•˜๋ฉฐ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์‰ฝ๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ๋„๋ก ๋„ค์ด๋ฐ์„ ์ ์ ˆํžˆ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. 4๏ธโƒฃ ํ•˜๋“œ์ฝ”๋”ฉ STOP! ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ง์ ‘ ๊ฐ’์„ ์ฝ”๋“œ์— ๋„ฃ๋Š” ๊ฒƒ์„ ์ง€์–‘ํ•ฉ์‹œ๋‹ค. ๊ธ€์—์„œ๋Š” ๋‚˜์ด๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•  ๋•Œ, ์—ฐ๋„๋ฅผ ํ•˜๋“œ์ฝ”๋”ฉํ•˜๋Š” ๊ฒƒ์„ ์˜ˆ์‹œ๋กœ ๋“ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ฌํ•ด๋Š” ๊ดœ์ฐฎ์ง€๋งŒ ๋‚ด๋…„, ํ˜น์€ ๋‚ดํ›„๋…„์ด ๋œ๋‹ค๋ฉด...? ๐Ÿคฎ 5๏ธโƒฃ ์ฝ”๋“œ์— ์ฃผ์„ ๋‹ฌ๊ธฐ 6๊ฐœ์›” ๋’ค์— ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ๋‹ค์‹œ ๋ณด๋ฉด ๊ทธ๊ฒƒ์ด ์–ด๋–ค ์—ญํ• ์„ ํ•˜๋Š”์ง€, ๋˜๋Š” ์–ด๋–ป๊ฒŒ ์ž‘๋™๋˜๋Š”์ง€ ๊ธฐ์–ตํ•˜์ง€ ๋ชปํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. (์‹ฌ์ง€์–ด ์–ด์ œ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋งˆ์ €) ๊ทธ๋Ÿฌ๋‚˜ ์‹œ๊ฐ„์„ ๋‚ด์–ด ๋ช…ํ™•ํ•˜๊ณ  ๊ฐ„๊ฒฐํ•œ ์„ค๋ช…์„ ๋‚จ๊ธฐ๋ฉด ๋‚˜์ค‘์— ๊ณจ์น˜ ์•„ํ”ˆ ์ผ์„ ๋งŽ์ด ์ค„์ผ ์ˆ˜ ์žˆ๊ฒ ์Šต๋‹ˆ๋‹ค. 6๏ธโƒฃ ๊ฐ€๋Šฅํ•˜๋ฉด ํด๋ž˜์Šค ๋ฉค๋ฒ„๋ฅผ private์œผ๋กœ ์„ ์–ธ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋“  ๊ฒƒ์„ private์œผ๋กœ ์„ค์ •ํ•˜๊ณ , ์ ˆ๋Œ€์ ์œผ๋กœ ๊ณต๊ฐœ๋˜์–ด์•ผ ํ•˜๋Š” ๋ถ€๋ถ„๋งŒ ๋…ธ์ถœ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์ฝ”๋“œ์—์„œ ์˜ˆ๊ธฐ์น˜ ์•Š์€ ๋ฐฉ์‹์œผ๋กœ ๊ฐœ์ธ ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•˜์—ฌ ๋ฌด์–ธ๊ฐ€๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ์œ„ํ—˜์ด ์žˆ์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. 7๏ธโƒฃ ๋ฌธ์ž์—ด ์กฐ์ž‘์„ ํ•  ๋• StringBuilder/Buffer๋ฅผ ์‚ฌ์šฉ String์€ ๊ฐ์ฒด๋ฅผ ์ˆ˜์ •ํ•  ๋•Œ๋งˆ๋‹ค ์ƒˆ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋‚ญ๋น„ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ง€์–‘ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด Buffer๋ฐ Builder ๊ฐ์ฒด๋Š” ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋‚ญ๋น„๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 8๏ธโƒฃ NullPointerException์„ ํ•ญ์ƒ ์ฃผ์˜ ํ•ญ์ƒ null์„ ํ™•์ธํ•˜๊ณ , ๊ทธ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ฑฐ๋‚˜ ์ฒ˜๋ฆฌํ•˜๋Š” ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•๋“ค์„ ํ™œ์šฉํ•ฉ์‹œ๋‹ค. 9๏ธโƒฃ ๋””์ž์ธ ํŒจํ„ด์„ ์‚ฌ์šฉ ๋””์ž์ธ ํŒจํ„ด์€ ์ ์ ˆํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋ฉด ๋งŽ์€ ์‹œ๊ฐ„๊ณผ ๋…ธ๋ ฅ์„ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ๊ณ , ์ฝ”๋“œ๋ฅผ ๋” ์ฝ๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ”Ÿ ๋‹น์‹ ์˜ ์ฝ”๋“œ๋Š” ํ•œ ํŽธ์˜ ์ด์•ผ๊ธฐ ๋‹น์‹ ์˜ ์ฝ”๋“œ๋Š” ๋™ํ™”์ฑ…๊ณผ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฝ๋Š” ์‚ฌ๋žŒ์ด ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ช…ํ™•ํ•˜๊ณ  ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์งœ์—ฌ์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•˜๊ฒŒ ์งค ์ˆ˜ ์—†๋‹ค๋ฉด, ๋‹น์‹ ์ด ์ž˜ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๊ณ  ์žˆ๋Š” ๊ฒ๋‹ˆ๋‹ค. ๐Ÿฃ ๊ทธ๋Ÿฌ๋‚˜ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฝ”๋”ฉ ๊ธฐ์ˆ ๋“ค์„ ๋งน๋ชฉ์ ์œผ๋กœ ์ ์šฉํ•˜์ง€ ๋ง์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๐Ÿฃ ์ด๋ฅผ ์–ด๊ธฐ๋Š” ๊ฒƒ์ด ๋” ์ ์ ˆํ•œ ์ผ์ด๋ผ๊ณ  ํŒ๋‹จํ•œ๋‹ค๋ฉด(์ถฉ๋ถ„ํžˆ ์ƒ๊ฐํ•˜๊ณ ), ๋ฐ”๊พธ๋Š” ๊ฒƒ์„ ๋‘๋ ค์›Œ ํ•ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค.

์•Œ๋ฆผ

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