JavaRush /Java Blog /Random-KO /๋กœ๋ฒ„ํŠธ ๋งˆํ‹ด, ํด๋ฆฐ ์ฝ”๋“œ. ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ "์ฟตํ‘ธ ์ฝ”๋“œ"์— ๊ด€ํ•œ ์ฑ… ๋ฆฌ๋ทฐ
Artem Murk
๋ ˆ๋ฒจ 35
ะ”ะฝะตะฟั€

๋กœ๋ฒ„ํŠธ ๋งˆํ‹ด, ํด๋ฆฐ ์ฝ”๋“œ. ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ "์ฟตํ‘ธ ์ฝ”๋“œ"์— ๊ด€ํ•œ ์ฑ… ๋ฆฌ๋ทฐ

Random-KO ๊ทธ๋ฃน์— ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค
์•ˆ๋…•ํ•˜์„ธ์š” Javarashevites! ์ด ๊ธ€์€ ๋กœ๋ฒ„ํŠธ ๋งˆํ‹ด(Robert Martin)์˜ ใ€Žํด๋ฆฐ ์ฝ”๋“œ(Clean Code)ใ€๋ผ๋Š” ์ฑ…์— ๋Œ€ํ•œ ๋ฆฌ๋ทฐ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ํ•จ๊ป˜ ์ฝ”๋“œ๋ฅผ ๊ฐœ์„ ํ•˜๊ณ  ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด๊ณ  ๋งˆ์ง€๋ง‰์—๋Š” ์ž‘์ง€๋งŒ ํฅ๋ฏธ๋กœ์šด ์ž‘์—…์ด ์—ฌ๋Ÿฌ๋ถ„์„ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.
๋กœ๋ฒ„ํŠธ ๋งˆํ‹ด์˜ 'ํด๋ฆฐ ์ฝ”๋“œ'.  ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ "์ฟตํ‘ธ ์ฝ”๋“œ" ์ฑ… ๋ฆฌ๋ทฐ - 1
๋งค์ผ ์ฝ”๋“œ ํŽธ์ง‘๊ธฐ๋ฅผ ์—ด๋ฉด ์ˆ˜๋งŽ์€ ํด๋ž˜์Šค, ํ•จ์ˆ˜, ๋ณ€์ˆ˜๋ฅผ ์ ‘ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ ์ฝ”๋“œ๊ฐ€ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ž‘์„ฑ๋˜๊ณ , ํ•œ ๋ฒˆ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ, ์ค„์ด ๊ฑฐ์˜ ์—†๊ณ , ํ˜ผ์ž ์ž‘์—…ํ•˜๊ณ , ํŽธ์ง‘์ด ์—†๊ณ  ๊ณ ๊ฐ์˜ ์ถ”๊ฐ€ ์ง€์›์ด ์—†๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ! ์‹ค์Šต์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด, ์ด๋Ÿฐ ์ผ์ด ์ผ์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ๊ท€ํ•˜๋„ ์ดํ•ดํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์šฐ๋ฆฌ๋Š” ์–ด๋–ป๊ฒŒ๋“  ์šฐ๋ฆฌ ํŒ€ ๊ตฌ์„ฑ์›๋“ค๊ณผ ์ƒํ˜ธ ์ž‘์šฉํ•˜๊ณ  "ํžŒ๋‘" ์ฝ”๋“œ๋ฅผ ์œ ์ง€ํ•˜๋ฉฐ ์ œํ’ˆ์„ ์ˆ˜๋ฐฑ๋งŒ ์ค„๋กœ ๊ตฌ๋ฌธ ๋ถ„์„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” ํ›ˆ๋ จ ๋™๋ฃŒ๋“ค๋กœ๋ถ€ํ„ฐ โ€œ์ด ์ฝ”๋“œ๋Š” ์ œ๊ฐ€ ์ž‘์„ฑํ•œ ๊ฒƒ์ด๋ฏ€๋กœ ๋ˆ„๊ตฌ์—๊ฒŒ๋„ ๋ณด์—ฌ์ฃผ์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹คโ€๋ผ๋Š” ๋‹ต๋ณ€์„ ์ž์ฃผ ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌํ•œ ์ฝ”๋“œ์— ๋Œ€ํ•œ ๋„์›€๋ง ์š”์ฒญ์„ ๋ณด๋ฉด ๋งค์šฐ ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. ๊นŠ์ด ํŒŒ๊ณ ๋“ค๊ณ  ์ดํ•ดํ•˜๋Š” ์‹œ๊ฐ„(๋•Œ๋•Œ๋กœ ์ •๋ง ๊ธด ์‹œ๊ฐ„) ๊ทธ ์‚ฌ๋žŒ์ด ๋‚˜์—๊ฒŒ ๋ฌด์—‡์„ ๋งํ•˜๊ณ  ์‹ถ์—ˆ๋Š”์ง€, ๋‚˜๋Š” ์‹ฌ์ง€์–ด "์ง€์šฐ๊ณ  ๋‹ค์‹œ ์จ๋ผ"๋ผ๊ณ  ๋งํ•˜๊ณ  ์‹ถ๋‹ค! ๋‹น์‹ ์„ ๋•๊ณ  ์‹ถ์–ดํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์˜ ์‹œ๊ฐ„๊ณผ ์—๋„ˆ์ง€์— ๊ฐ์‚ฌํ•˜๊ณ , ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ธ€์„ ์“ฐ์‹ญ์‹œ์˜ค. ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฅธ๋‹ค๋ฉด ๋ฐฐ์šฐ๊ธฐ์— ๋„ˆ๋ฌด ๋Šฆ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. Robert Martin์˜ ์ฑ…์€ Java๋กœ ๋œ ๋งŽ์€ ์˜ˆ์ œ๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค๋Š” ์ ์—์„œ ์ด๋Ÿฌํ•œ ํ˜•์‹์˜ ์ฑ… ์ค‘์—์„œ ๋‹จ์—ฐ ๋‹๋ณด์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋‚ด ์ž…์žฅ์—์„œ๋Š” ๋‹ค์†Œ ๊ด‘์‹ ์ ์ธ ์ง„์ˆ ์ผ ์ˆ˜๋„ ์žˆ์ง€๋งŒ OOP ์Šคํƒ€์ผ, ์ฆ‰ ๋ถ€๋ถ„๊ณผ ์„น์…˜์„ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ณ  ์ฝ๊ธฐ ์‰ฌ์šฐ๋ฉฐ, ์ด๋™ ์ค‘์—๋„, ์ €๋… ์ž ์ž๋ฆฌ์— ๋“ค๊ธฐ ์ „์—๋„ ์‰ฝ๊ฒŒ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ์ฑ…์ž…๋‹ˆ๋‹ค. ํด๋ฆฐ์ฝ”๋“œ๋Š” 3๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๋ถ€๋ถ„์—์„œ๋Š” ์ฑ…์˜ ์ด๋ก ์„ ์‚ดํŽด๋ณด๊ณ  ๋””์ž์ธ ํŒจํ„ด๊ณผ ์˜ˆ์ ˆ์˜ ๊ทœ์น™์— ๋Œ€ํ•ด ๋ฐฐ์šฐ๋„๋ก ์š”์ฒญ๋ฐ›์Šต๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ๋ถ€๋ถ„์€ ๋ฆฌํŒฉํ† ๋ง๊ณผ ์ž‘์„ฑ์„ ์—ฐ์Šตํ•˜๋„๋ก ์œ ๋„ํ•˜๊ณ , ์„ธ ๋ฒˆ์งธ ๋ถ€๋ถ„์€ ์˜ˆ์ œ์˜ "๋ƒ„์ƒˆ" ์ฝ”๋“œ์— ๋Œ€ํ•œ ์ตœ์ข… ์š”์•ฝ์ž…๋‹ˆ๋‹ค. ๊ธ€์Ž„, ์ €์ž๋Š” ์ฃผ๋กœ Java Core์— ๋Œ€ํ•œ ์ง€์‹์ด ํ•„์š”ํ•œ ๋งŽ์€ ์ฃผ์ œ๋ฅผ ๋‹ค๋ฃจ์—ˆ์ง€๋งŒ JUnit ๋‹จ์œ„ ํ…Œ์ŠคํŠธ, Log4j ๋กœ๊น…, ๋””์ž์ธ์˜ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ํŒจํ„ด์— ๋Œ€ํ•œ ์ง€์‹์„ ๋‹ค๋ฃจ๋Š” ์„น์…˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค(๊ทธ๋Ÿฌ๋‚˜ ์œ„์—์„œ ๋งํ–ˆ๋“ฏ์ด ๊ทธ ์ค‘ ๋งŽ์€ ๋ถ€๋ถ„์ด ์žˆ์œผ๋ฉฐ ์ดํ•ดํ•  ์ˆ˜ ์—†๋Š” ๋ชจ๋“  ๋‚ด์šฉ์€ ์„ฑ๊ณต์ ์œผ๋กœ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ, JavaRush ๊ณผ์ •์—์„œ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฑ…์˜ ๋ชจ๋“  ์žฅ์€ ์„œ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฏ€๋กœ ์›ํ•˜๋Š” ์žฅ๋ถ€ํ„ฐ ์„ฑ๊ณต์ ์œผ๋กœ ์ฝ๊ธฐ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฑ…์—์„œ ์–ป์€ ์ฃผ์š” ์•„์ด๋””์–ด๋ฅผ ๊ฐ„๋žตํ•˜๊ฒŒ ์š”์•ฝํ•ฉ๋‹ˆ๋‹ค. ์ด ์ง„์ˆ ์— ๋Œ€ํ•œ ๊ท€ํ•˜์˜ ๋น„์ „์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ท€ํ•˜์˜ ์˜๊ฒฌ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

1. ๋Œ“๊ธ€ == ์•….

๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์ฃผ์„์€ ์ž˜๋ชป๋œ ์ฝ”๋“œ๋ฅผ ๊ฐ€๋ฆฌ๊ธฐ ์œ„ํ•œ ์ˆ˜๋‹จ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์–ด๋–ค ๊ฒฝ์šฐ์—๋Š” ์ง€์†์ ์ธ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง์ด ์žˆ๋Š” ๊ฒฝ์šฐ ๋ฉ”์„œ๋“œ๋‚˜ ๋ณ€์ˆ˜์˜ ๋ชฉ์ ์— ๋Œ€ํ•ด์„œ๋„ ๊ฑฐ์ง“๋ง์„ ํ•ฉ๋‹ˆ๋‹ค.

2. ์ฃผ์„ ์ฒ˜๋ฆฌ๋œ ์ฝ”๋“œ, ๋ฐ๋“œ ์ฝ”๋“œ.

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ด๋Ÿฌํ•œ ์ฝ”๋“œ ์กฐ๊ฐ์„ ๋‚จ๊ฒจ ๋‘๋Š” ๊ฒƒ์€ ์“ฐ๋ ˆ๊ธฐ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ์ฝ”๋“œ๋Š” ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ๋ˆ„์ ๋˜์–ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ฒญ๊ฒฐ์„ฑ์„ ๋ฐฉํ•ดํ•ฉ๋‹ˆ๋‹ค. ๋•Œ๋•Œ๋กœ ํ•ด๋‹น ๋ชจ๋“ˆ์˜ ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

3. ๋ฉ”์†Œ๋“œ, ํด๋ž˜์Šค ๋ฐ ๋ณ€์ˆ˜์˜ ์ œ๋ชฉ.

์ด ์ฃผ์ œ์— ๋Œ€ํ•ด ๋…ผ์˜ํ•˜๋ ค๋ฉด ๋ณ„๋„์˜ ๊ธฐ์‚ฌ๋ฅผ ์ฝ์–ด๋ณผ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒŒ์œผ๋ฅด์ง€ ๋ง๊ณ  ๋ชฉ์ ์„ ์•Œ ์ˆ˜ ์žˆ๋Š” ์ด๋ฆ„์„ ์“ฐ์„ธ์š”. ์ œ๋ชฉ ์ฒ ์ž๋ฒ•์˜ ๋ช‡ ๊ฐ€์ง€ ํ‘œ์ค€์„ ์•Œ์•„๋ณด์„ธ์š”. ์ด ์ฃผ์ œ๋Š” ์ž์„ธํ•œ ์—ฐ๊ตฌ๋ฅผ ์œ„ํ•ด "ํ•„์ˆ˜"์ž…๋‹ˆ๋‹ค.

4. ๊ฐ ๋ฉ”์†Œ๋“œ์™€ ๋ณ€์ˆ˜๋Š” ํด๋ž˜์Šค ๊ณ„์ธต ๊ตฌ์กฐ์—์„œ ํ•ด๋‹น ์œ„์น˜๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ํด๋ž˜์Šค์—๋Š” ๋ณ€์ˆ˜์™€ ๋ฉ”์„œ๋“œ(์ •์  ๋ฐ ๋น„์ •์ ), ์ƒ์„ฑ์ž, ์ค‘์ฒฉ ๋ฐ ๋‚ด๋ถ€ ํด๋ž˜์Šค, ์—ด๊ฑฐํ˜•์ด ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ ์ •๋ณด๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์•„์„œ ์ˆ˜์—…์—์„œ ๋ชจ๋“  ์‚ฌ๋žŒ์˜ ์œ„์น˜๋ฅผ โ€‹โ€‹๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. Java ์ฝ”์–ด ํด๋ž˜์Šค๋ฅผ ๋ณด๋ฉด ๊ตฌ์กฐ๊ฐ€ ๋ช…ํ™•ํ•˜๊ฒŒ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๊ณ  ๊ฐ ๋ถ€๋ถ„์ด ํ•ด๋‹น ์œ„์น˜์— ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ํ”„๋กœ์ ํŠธ ๋‚ด์—์„œ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ฐ ํด๋ž˜์Šค์—์„œ๋Š” ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‚˜ ์ž์‹ ์„ ์œ„ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ตฌ์„ฑ ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ํด๋ž˜์Šค ์‹œ์ž‘ ๋ถ€๋ถ„์—๋Š” ์ •์  ๋ณ€์ˆ˜๊ฐ€ ์žˆ๊ณ , ๊ทธ ๋‹ค์Œ์—๋Š” ๊ฐœ์ฒด ๋ณ€์ˆ˜ + Enum์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณ€์ˆ˜ ๋’ค์—๋Š” ํด๋ž˜์Šค ์ƒ์„ฑ์ž๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ˆ˜์—…๊ณผ ํ•จ๊ป˜ ์ž‘์—…ํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”์†Œ๋“œ ๋‹ค์Œ์— getter์™€ setter๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋งˆ์ง€๋ง‰์—๋Š” ๋‚ด๋ถ€ ์ˆ˜์—…์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๋Œ“๊ธ€์— ์ง์ ‘ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

5. ๋ฉ”์†Œ๋“œ์˜ ์ถ”์ƒํ™” ์ˆ˜์ค€.

๋‚˜์—๊ฒŒ ์ด๊ฒƒ์€ ์ตœ๊ณ ์˜ ๋ฐœ๊ฒฌ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ๋ฉ”์„œ๋“œ์—๋Š” ํ•œ ๊ฐ€์ง€ ์ถ”์ƒํ™” ์ˆ˜์ค€์˜ ์—ฐ์‚ฐ์ž๋งŒ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๋‹ค๋‹จ๊ณ„ ์ž‘์—…์„ ํ•จ๊ป˜ ํ˜ผํ•ฉํ•˜๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

6. ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ.

ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚˜์€ ํ™•์ธ๋œ ์˜ˆ์™ธ ๋˜๋Š” ํ™•์ธ๋˜์ง€ ์•Š์€ ์˜ˆ์™ธ(์˜๊ฒฌ ์ž‘์„ฑ)? ๋‚˜๋Š” Checked์˜ ์ง€์ง€์ž์ด์ง€๋งŒ, ์ด ์ฑ…์€ Unchecked Exceptions๋ฅผ ์™ธ๋ถ€์—์„œ ๋ฐ”๋ผ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ํ™•์ธ๋˜์ง€ ์•Š์€ ์˜ˆ์™ธ๋Š” ํŠนํžˆ ์˜ˆ์™ธ๊ฐ€ ํ•œ ๋ฒˆ์— ์—ฌ๋Ÿฌ ๋ ˆ์ด์–ด๋ฅผ "๊ด€ํ†ต"ํ•œ๋‹ค๋Š” ์ ์„ ๊ณ ๋ คํ•˜๋ฉด ๋ฉ”์„œ๋“œ ์‹œ๊ทธ๋‹ˆ์ฒ˜๋ฅผ ์†์ƒ์‹œํ‚ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ž‘์€ ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•œ ๋ถˆํŽธํ•จ์€ ์ด๋ฅผ ํฌ์ฐฉํ•˜๊ธฐ ์ „์— ์ „์ฒด ๋ฉ”์„œ๋“œ ์ฒด์ธ์„ ์žฌ์ •์˜ํ•˜๊ฒŒ ๋˜๋ฏ€๋กœ ๋งŽ์€ ๊ฒฝ์šฐ ๊ฐœ๋ฐœ์— ๋งค์šฐ โ€‹โ€‹๋ถˆํŽธํ•ฉ๋‹ˆ๋‹ค.

7. ์ฝ”๋“œ ํ˜•์‹ํ™”.

์˜ฌ๋ฐ”๋ฅธ ํ˜•์‹์˜ ์ฝ”๋“œ๋Š” ๋ช…ํ™•ํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ฐ€๋…์„ฑ๋„ ๋†’์Šต๋‹ˆ๋‹ค. ๋Œ€๊ด„ํ˜ธ์™€ ๋‚ด๋ถ€ ๋™์ž‘์— ๋Œ€ํ•œ ์•„์ด๋””์–ด๋ฅผ ์ฆ‰์‹œ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. if, else ๊ตฌ๋ฌธ์˜ ์กฐ๊ฑด ์˜ˆ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋“  ๊ฒƒ์„ ํ•œ ์ค„์— ์ž‘์„ฑํ•ด์„œ๋Š” ์•ˆ ๋˜๋ฉฐ ๊ธด ์ฒด์ธ์„ ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

8. ์กฐ๊ฑด์˜ ๋ถ€์ •.

์กฐ๊ฑด์—์„œ ๊ฑฐ๋ถ€๋ฅผ ํ”ผํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•˜์‹ญ์‹œ์˜ค. ์ด๊ฒƒ์€ ์‹ฌ๋ฆฌ์  ์š”์ธ์— ๋” ๊ฐ€๊น๊ณ  ์šฐ๋ฆฌ ๋‡Œ๋Š” ๊ฑฐ๋ถ€๋ฅผ ์ž˜ ์ธ์‹ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค! ๊ทธ ํ‘œํ˜„์ด ๋ˆˆ์— ๋„์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฉ”์„œ๋“œ๋ฅผ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด if(!condition.isTrue)๋ฅผ ๋ถ€์ •ํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚ซ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ›จ์”ฌ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(condition.isFalse).

9. ํ•จ์ˆ˜๋Š” ํ•˜๋‚˜์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฉ”์„œ๋“œ๊ฐ€ ๋งŽ์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ ๋‹จ์ผ ์ž‘์—… ๋ฉ”์„œ๋“œ๋กœ ๋‚˜๋ˆ•๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•์€ ์ง€์›ํ•˜๊ธฐ๊ฐ€ ๋งค์šฐ ์‰ฝ๊ณ , ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์‰ฌ์šฐ๋ฉฐ, ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๊ต์ฒดํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

10. ๊ฐ™์€ ๋ง์„ ๋ฐ˜๋ณตํ•˜์ง€ ๋งˆ์„ธ์š”.

DRY ์ฝ”๋“œ๋ฅผ ๋ฐ˜๋ณตํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค(์ž์‹ ์„ ๋ฐ˜๋ณตํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค). ์ด๋Š” ์ฝ”๋“œ๋ฅผ ํฌ๊ฒŒ ์ค„์ด๋Š” ๊ธฐ๋ณธ ๊ทœ์น™ ์ค‘ ํ•˜๋‚˜์ด๋ฏ€๋กœ ๋ช…์‹ฌํ•˜์„ธ์š”. ๋ฐ˜๋ณต๋˜๋Š” ๋ชจ๋“  ์ฝ”๋“œ ์กฐ๊ฐ์„ ๋ณ„๋„์˜ ํ•จ์ˆ˜์— ๋„ฃ์œผ์‹ญ์‹œ์˜ค. ๋ฌผ๋ก  DRY, KISS(Keep it simple Stupid), SOLID , YAGNI์— ๋Œ€ํ•ด ๋” ๋งŽ์ด ์ด์•ผ๊ธฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์šฉ์–ด๋Š” ์ดํ•ด์™€ ์„ค๊ณ„์— ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค. ์ด ๊ธฐ์‚ฌ๋Š” "Clean Code"๋ผ๋Š” ์ฑ…์— ๋Œ€ํ•œ ๋ฆฌ๋ทฐ๋ฅผ ๋‹ค๋ฃจ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ณ„๋„์˜ ๊ธฐ์‚ฌ๋กœ ์ž‘์„ฑํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ์ด์— ๋Œ€ํ•ด ๋‹ค์‹œ ์“ธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๋กœ๋ฒ„ํŠธ ๋งˆํ‹ด์˜ 'ํด๋ฆฐ ์ฝ”๋“œ'.  ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ "์ฟตํ‘ธ ์ฝ”๋“œ" ์ฑ… ๋ฆฌ๋ทฐ - 2
์•ฝ์†๋Œ€๋กœ ์ž‘๊ณ  ์‰ฌ์šด ์ž‘์—…์ž…๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์€ ์ฃผ์–ด์ง„ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋น„๋งŒ ์ง€์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ์˜ ์˜ค๋ฅ˜ ๋ฐ ์ˆ˜์ • ์‚ฌํ•ญ ์ˆ˜๋ฅผ ์ฃผ์„์— ์ ์–ด์ฃผ์„ธ์š”. ์ถ”์‹  ์ฝ”๋“œ๊ฐ€ ์ž‘๋™ ์ค‘์ด๋ฉฐ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์‚ฌ์šฉ๋˜๋ฉด ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
//Weight in kg.
//Height in metres.
public class sample {
    public static void main (String[] args) {
        humanIMB humanIMB = new humanIMB(80,1.52);
        System.out.println(humanIMB.Result());
    }
}
class humanIMB {
    public double W; //Weight Human
    public double H; // Height Human
    private static double imb;
    public humanIMB(double w, double h) {
        W = w;
        H = h;
        imb = W / (H * H);
    }
    public double takeW() {
        return W;
    }
    public void putW(double w) {
        W = w;
        imb = W / (H * H);
    }
    public double takeH() {
        return H;
    }
    public void putH(double h) {
        H = h;
        imb = W / (H * H);
    }
    public static double takeImt() {
        return imb;
    }
    public static String Result() {
        String  string = null;
        if (imb >=18.5 & imb <25) {
            string ="ะะพั€ะผะฐ, ั‚ั‹ ะฒ ั„ะพั€ะผะต!";
        }
        if (imb >=25 & imb <30) {
            string ="ะŸั€ะตะดะพะถะธั€ะตะฝะธะต. ะญะน, ะฟะพะพัั‚ะพั€ะพะถะฝะตะต ั ะฟะธั€ะพะถะฝั‹ะผะธ ";
        }
        if (imb >=30) {
            string ="ะžะถะธั€ะตะฝะธะต. SCHWEINE! ะฅะฒะฐั‚ะธั‚ ะถั€ะฐั‚ัŒ, ะธะดะธ ะฝะฐ ั‚ั€ะตะฝัŽ!";
        }
        if (imb <18.5) {
            string ="ะ”ะตั„ะธั†ะธั‚ ะผะฐััั‹ ั‚ะตะปะฐ. ะ’ ะผะพะดะตะปะธ ั€ะตัˆะธะป ะฟะตั€ะตะบะฒะฐะปะธั„ะธั†ะธั€ะพะฒะฐั‚ัŒัั?";
        }
        return string;
    }
}
์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION