Study/CleanCode

[Study][CleanCode - 3] 10. ํด๋ž˜์Šค

youn12 2022. 8. 1. 15:34
๐Ÿ“‹ ๋ชฉ์ฐจ.

10. ์ฑ•ํ„ฐ
    .ํด๋ž˜์Šค ์ฒด๊ณ„
    .์บก์Šํ™”

    .ํด๋ž˜์Šค๋Š” ์ž‘์•„์•ผ ํ•œ๋‹ค!.
    .๋‹จ์ผ ์ฑ…์ž„ ์›์น™
    .์‘์ง‘๋„
    .๋ณ€๊ฒฝ์œผ๋กœ๋ถ€ํ„ฐ ๊ฒฉ๋ฆฌ


โœ”๏ธ ๋‚ด์šฉ.

 

10. ํด๋ž˜์Šค

 

๊นจ๋—ํ•œ ํด๋ž˜์Šค๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ฐฉ๋ฒ•

 


.ํด๋ž˜์Šค ์ฒด๊ณ„

 

 ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•˜๋Š” ํ‘œ์ค€ ์ž๋ฐ” ๊ด€๋ก€

 

  1. ๋ณ€์ˆ˜ ๋ชฉ๋ก
    1. static public  ๋ณ€์ˆ˜
    2. static private ๋ณ€์ˆ˜
    3. private ๋ณ€์ˆ˜
    4. private ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜
    5. ๊ณต๊ฐœ ๋ณ€์ˆ˜
  2. ๊ณต๊ฐœ ํ•จ์ˆ˜
    • ๋น„๊ณต๊ฐœ ํ•จ์ˆ˜๋Š” ์ž์‹ ์„ ํ˜ธ์ถœํ•˜๋Š” ๊ณต๊ฐœ ํ•จ์ˆ˜ ์งํ›„์— ๋„ฃ๋Š”๋‹ค (์„ธ๋กœ๊ฑฐ๋ฆฌ)

 


 

.์บก์Šํ™”

 

 ๋ณ€์ˆ˜์™€ ์œ ํ‹ธ ํ•จ์ˆ˜๋Š” ๊ฐ€๋Šฅํ•œ ๊ณต๊ฐœํ•˜์ง€ ์•Š๋Š” ํŽธ์ด ๋‚ซ์ง€๋งŒ ๋ฐ˜๋“œ์‹œ ์ˆจ๊ฒจ์•ผ ํ•œ๋‹ค๋Š” ๋ฒ•์น™๋„ ์—†๋‹ค.

๋•Œ๋กœ๋Š” ๋ณ€์ˆ˜๋‚˜ ์œ ํ‹ธ ํ•จ์ˆ˜๋ฅผ protected๋กœ ์„ ์–ธํ•ด ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์— ์ ‘๊ทผ์„ ํ—ˆ์šฉํ•˜๊ธฐ๋„ ํ•œ๋‹ค. ๊ฐ™์€ ํŒจํ‚ค์ง€ ์•ˆ์—์„œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๊ฐ€ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๊ฑฐ๋‚˜ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค๋ฉด ๊ทธ ํ•จ์ˆ˜๋‚˜ ๋ณ€์ˆ˜๋ฅผ protected๋กœ ์„ ์–ธํ•˜๊ฑฐ๋‚˜ ํŒจํ‚ค์ง€ ์ „์ฒด๋กœ ๊ณต๊ฐœํ•œ๋‹ค.

 ํ•˜์ง€๋งŒ ๋น„๊ณต๊ฐœ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•  ๋ฐฉ๋ฒ•์„ ์ฐพ๋Š”๊ฒŒ ์šฐ์„ ์ด๋‹ค. ์บก์Šํ™”๋ฅผ ํ’€์–ด์ฃผ๋Š” ๊ฒฐ์ •์€ ์–ธ์ œ๋‚˜ ์ตœํ›„์˜ ์ˆ˜๋‹จ์ด๋‹ค.

 


 

.ํด๋ž˜์Šค๋Š” ์ž‘์•„์•ผ ํ•œ๋‹ค!.

 

 ํด๋ž˜์Šค๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ๋„, ํ•จ์ˆ˜์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ '์ž‘๊ฒŒ'๊ฐ€ ๊ธฐ๋ณธ ๊ทœ์น™์ด๋‹ค.

ํ•จ์ˆ˜๋Š” ๋ฌผ๋ฆฌ์ ์ธ ํ–‰ ์ˆ˜๋กœ ํฌ๊ธฐ๋ฅผ ์ธก์ •ํ–ˆ๋‹ค. ํด๋ž˜์Šค๋Š” ๋งก์€ ์ฑ…์ž„์„ ์„ผ๋‹ค. ์ตœ๋Œ€ํ•œ ์ฑ…์ž„์„ ์ค„์ด์ž

 


 

 .๋‹จ์ผ ์ฑ…์ž„ ์›์น™

 

 ๋‹จ์ผ ์ฑ…์ž„ ์›์น™ (Single Responseibillity Principle, SRP)์€ ํด๋ž˜์Šค๋‚˜ ๋ชจ๋“ˆ์„ ๋ณ€๊ฒฝํ•  ์ด์œ ๊ฐ€ ํ•˜๋‚˜, ๋‹จ ํ•˜๋‚˜๋ฟ์ด์—ฌ์•ผ ํ•œ๋‹ค๋Š” ์›์น™์ด๋‹ค. SRP๋Š” '์ฑ…์ž„'์ด๋ผ๋Š” ๊ฐœ๋…์„ ์ •์˜ํ•˜๋ฉฐ ์ ์ ˆํ•œ ํด๋ž˜์Šค ํฌ๊ธฐ๋ฅผ ์ œ์‹œํ•œ๋‹ค. ํด๋ž˜์Šค๋Š” ์ฑ…์ž„, ์ฆ‰ ๋ณ€๊ฒฝํ•  ์ด์œ ๊ฐ€ ํ•˜๋‚˜์—ฌ์•ผ ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.

 

 ํฐ ํด๋ž˜์Šค ๋ช‡ ๊ฐœ๊ฐ€ ์•„๋‹ˆ๋ผ ์ž‘์€ ํด๋ž˜์Šค ์—ฌ๋Ÿฟ์œผ๋กœ ์ด๋ค„์ง„ ์‹œ์Šคํ…œ์ด ๋” ๋ฐ”๋žŒ์งํ•˜๋‹ค

 

 ๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค์€ ์ž์ž˜ํ•œ ๋‹จ์ผ ์ฑ…์ž„ ํด๋ž˜์Šค๊ฐ€ ๋งŽ์•„์ง€๋ฉด ํฐ ๊ทธ๋ฆผ์„ ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ค์›Œ์ง„๋‹ค๊ณ  ์šฐ๋ คํ•œ๋‹ค. ํฐ ๊ทธ๋ฆผ์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ํด๋ž˜์Šค๊ฐ„ ์ˆ˜ ์—†์ด ๋„˜๋‚˜๋“ค์–ด์•ผ ํ•œ๋‹ค๊ณ  ๊ฑฑ์ •ํ•œ๋‹ค.

 ํ•˜์ง€๋งŒ ์ž‘์€ ํด๋ž˜์Šค๊ฐ€ ๋งŽ์€ ์‹œ์Šคํ…œ์ด๋“  ํฐ ํด๋ž˜์Šค๊ฐ€ ๋ช‡ ๊ฐœ ๋ฟ์ธ ์‹œ์Šคํ…œ์ด๋“  ๋Œ์•„๊ฐ€๋Š” ๋ถ€ํ’ˆ์€ ๊ทธ ์ˆ˜๊ฐ€ ๋น„์Šทํ•˜๋‹ค. ์–ด๋Š ์‹œ์Šคํ…œ์ด๋“  ์ตํž ๋‚ด์šฉ์€ ๊ทธ์–‘์ด ๋น„์Šทํ•˜๋‹ค. ๊ทœ๋ชจ๊ฐ€ ์–ด๋Š ์ˆ˜์ค€์— ์ด๋ฅด๋Š” ์‹œ์Šคํ…œ์€ ๋…ผ๋ฆฌ๊ฐ€ ๋งŽ๊ณ  ๋ณต์žกํ•˜๋‹ค. ์ด๋Ÿฐ ๋ณต์žก์„ฑ์„ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ฒด๊ณ„์ ์ธ ์ •๋ฆฌ๊ฐ€ ํ•„์ˆ˜์ด๋‹ค. ๊ทธ๋ž˜์•ผ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฌด์—‡์ด ์–ด๋””์— ์žˆ๋Š์ง€ ์‰ฝ๊ฒŒ ์ฐพ๋Š”๋‹ค. ๊ทธ๋ž˜์•ผ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•  ๋–„ ์ง์ ‘ ์˜ํ–ฅ์ด ๋ฏธ์น˜๋Š” ์ปดํฌ๋„ŒํŠธ๋งŒ ์ดํ•ดํ•ด๋„ ์ถฉ๋ถ„ํ•˜๋‹ค.  ํฐ ํด๋ž˜์Šค๊ฐ€ ๋ช‡ ๊ฐœ ๋ฟ์ธ ์‹œ์Šคํ…œ์€ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•  ๋•Œ ๋‹น์žฅ ์•Œ ํ•„์š”๊ฐ€ ์—†๋Š” ์‚ฌ์‹ค๊นŒ์ง€ ๋“ค์ด๋ฐ€์–ด ๋…์ž๋ฅผ ๋ฐฉํ•ดํ•œ๋‹ค.

 


 

.์‘์ง‘๋„

 

 ํด๋ž˜์Šค๋Š” ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜ ์ˆ˜๊ฐ€ ์ž‘์•„์•ผ ํ•œ๋‹ค. ๊ฐ ํด๋ž˜์Šค ๋ฉ”์„œ๋“œ๋Š” ํด๋ž˜์Šค ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๋ฅผ ํ•˜๋‚˜ ์ด์ƒ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ๋ฉ”์„œ๋“œ๊ฐ€ ๋ณ€์ˆ˜๋ฅผ ๋” ๋งŽ์ด ์‚ฌ์šฉํ• ์ˆ˜๋ก ๋ฉ”์„œ๋“œ์™€ ํด๋ž˜์Šค๋Š” ์‘์ง‘๋„ ๋†’์•„์ง„๋‹ค. ๋ชจ๋“  ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๋ฅผ ๋ฉ”์„œ๋“œ๋งˆ๋‹ค ์‚ฌ์šฉํ•˜๋Š” ํด๋ž˜์Šค๋Š” ์‘์ง‘๋„๊ฐ€ ๊ฐ€์žฅ ๋†’๋‹ค

 ์ผ๋ฐ˜์ ์œผ๋กœ ์‘์ง‘๋„๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ํด๋ž˜์Šค๋Š” ๊ฐ€๋Šฅํ•˜์ง€๋„ ๋ฐ”๋žŒ์งํ•˜์ง€๋„ ์•Š๋‹ค. ๊ทธ๋ ‡์ง€๋งŒ ์šฐ๋ฆฌ๋Š” ์‘์ง‘๋„๊ฐ€ ๋†’์€ ํด๋ž˜์Šค๋ฅผ ์„ ํ˜ธํ•œ๋‹ค. ์‘์ง‘๋„๊ฐ€ ๋†’๋‹ค๋Š” ๋ง์€ ํด๋ž˜์Šค์— ์†ํ•œ ๋ฉ”์„œ๋“œ์™€ ๋ณ€์ˆ˜๊ฐ€ ์„œ๋กœ ์˜์กดํ•˜๋ฉฐ ๋…ผ๋ฆฌ์ ์ธ ๋‹จ์œ„๋กœ ๋ฌถ์ธ๋‹ค๋Š” ์˜๋ฏธ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

 'ํ•จ์ˆ˜๋ฅผ ์ž‘๊ฒŒ, ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ชฉ๋ก์„ ์งง๊ฒŒ'๋ผ๋Š” ์ „๋žต์„ ๋”ฐ๋ฅด๋‹ค ๋ณด๋ฉด ๋•Œ๋•Œ๋กœ ๋ช‡๋ช‡ ๋ฉ”์„œ๋“œ๋งŒ์ด ์‚ฌ์šฉํ•˜๋Š” ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๊ฐ€ ์•„์ฃผ ๋งŽ์•„์ง„๋‹ค. ์ด๋Š” ์ƒˆ๋กœ์šด ํด๋ž˜์Šค๋กœ ์ชผ๊ฐœ์•ผ ํ•œ๋‹ค๋Š” ์‹ ํ˜ธ์ด๋‹ค. ์‘์ง‘๋„๊ฐ€ ๋†’์•„์ง€๋„๋ก ๋ณ€์ˆ˜์™€ ๋ฉ”์„œ๋“œ๋ฅผ ์ ์ ˆํžˆ ๋ถ„๋ฆฌํ•ด ์ƒˆ๋กœ์šด ํด๋ž˜์Šค๋กœ ์ชผ๊ฐœ ์ค€๋‹ค.

 


 

.๋ณ€๊ฒฝ์œผ๋กœ๋ถ€ํ„ฐ ๊ฒฉ๋ฆฌ

 

 ์š”๊ตฌ์‚ฌํ•ญ์€ ๋ณ€ํ•˜๊ธฐ ๋งˆ๋ จ์ด๋‹ค. ๋”ฐ๋ผ์„œ ์ฝ”๋“œ๋„ ๋ณ€ํ•˜๊ธฐ ๋งˆ๋ จ์ด๋‹ค. 

๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์šฐ๋ฆฌ๋Š” ๊ตฌ์ฒด์ ์ธ ํด๋ž˜์Šค์™€ ์ถ”์ƒ ํด๋ž˜์Šค๊ฐ€ ์žˆ๋‹ค ์•Œ๊ณ ์žˆ๋‹ค. ๊ตฌ์ฒด์ ์ธ ํด๋ž˜์Šค๋Š” ์ƒ์„ธํ•œ ๊ตฌํ˜„(์ฝ”๋“ค)์„ ํฌํ•จํ•˜๋ฉฐ ์ถ”์ƒ ํด๋ž˜์Šค๋Š” ๊ฐœ๋…๋งŒ ํฌํ•จํ•œ๋‹ค๊ณ ๋„ ๋ฐฐ์› ๋‹ค.

 ์ƒ์„ธํ•œ ๊ตฌํ˜„์— ์˜์กดํ•˜๋Š” ์ฝ”๋“œ๋Š” ํ…Œ์ŠคํŠธ๊ฐ€ ์–ด๋ ต๋‹ค. ์ˆ˜์‹œ๋กœ ๊ฐ’์ด ๋ณ€๋™๋˜๋Š” ์™ธ๋ถ€ API์— ์˜์กดํ•˜๋ฉฐ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์งœ๊ธฐ๋ž€ ์‰ฝ์ง€ ์•Š๋‹ค. ๋”ฐ๋ผ์„œ ์™ธ๋ถ€ API๋ฅผ ํ‰๋‚ด๋‚ด๋Š” ํ…Œ์ŠคํŠธ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด ๊ณ ์ •๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๊ฒŒ๋” ํ•˜์—ฌ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.

์œ„์™€ ๊ฐ™์€ ํ…Œ์ŠคํŠธ๊ฐ€ ๊ฐ€๋Šฅํ•  ์ •๋„๋กœ ์‹œ์Šคํ…œ์˜ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๋ฉด ์œ ์—ฐ์„ฑ๊ณผ ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋†’์•„์ง„๋‹ค. ๊ฒฐํ•ฉ๋„๊ฐ€ ๋‚ฎ๋‹ค๋Š” ์˜๋ฏธ๋Š” ๊ฐ ์‹œ์Šคํ…œ ์š”์†Œ๊ฐ€ ๋‹ค๋ฅธ ์š”์†Œ๋กœ๋ถ€ํ„ฐ ๊ฒฉ๋ฆฌ๊ฐ€ ์ž˜ ๋˜์–ด์žˆ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค. 

 ์ด๋ ‡๊ฒŒ ๊ฒฐํ•ฉ๋„๋ฅผ ์ตœ์†Œ๋กœ ์ค„์ด๋ฉด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋˜ ๋‹ค๋ฅธ ํด๋ž˜์Šค ์„ค๊ณ„ ์›์น™์ธ DIP(์˜์กด ์—ญ์ „)๋ฅผ ๋”ฐ๋ฅด๋Š” ํด๋ž˜์Šค๊ฐ€ ๋‚˜์˜จ๋‹ค.

DIP๋Š” ์ƒ์„ธํ•œ ๊ตฌํ˜„์ด ์•„๋‹ˆ๋ผ ์ถ”์ƒํ™”์— ์˜์กดํ•ด์•ผ ํ•œ๋‹ค๋Š” ์›์น™์ด๋‹ค.


๐Ÿ“ ๋Š๋‚€์ .

 - ๊ฐ ๊ฐ์ฒด์ง€ํ–ฅ์˜ ์„ค๊ณ„ ์›์น™์„ ์˜ˆ๋กœ๋“ค๋ฉด์„œ ํด๋ž˜์Šค์˜ ์„ค๊ณ„์— ๋Œ€ํ•ด ์ข‹์€ ๋‚ด์šฉ์ด์˜€๋˜๊ฒƒ ๊ฐ™๋‹ค.
 - ํด๋ž˜์Šค ๋˜ํ•œ ์ตœ๋Œ€ํ•œ ์ž‘๊ฒŒ ์ตœ์†Œํ•œ์˜ ์ฑ…์ž„์œผ๋กœ ์‘์ง‘๋„๋Š” ๋†’์ด๊ณ  ๊ฒฐํ•ฉ๋„๋Š” ๋‚ฎ์ถ”๋„๋ก
 - ํด๋ž˜์Šค ๋‚ด ๋ฉ”์„œ๋“œ, ๋ณ€์ˆ˜์™€ ์‘์ง‘๋„์˜ ๊ด€๊ณ„
 - ๊ตฌ์ฒด์ ์ธ/์ถ”์ƒ ํด๋ž˜์Šค์™€ ๊ฒฐํ•ฉ๋„์˜ ๊ด€๊ณ„