๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Book TIL

ํด๋ฆฐ์ฝ”๋“œ Day 20. ํด๋ž˜์Šค

by vividmin 2022. 5. 12.
320x100

โœ… ์ด ํฌ์ŠคํŒ…์€ ๋…ธ๋งˆ๋“œ ์ฝ”๋” ๋ถํด๋Ÿฝ  'ํด๋ฆฐ ์ฝ”๋“œ' ์ฑŒ๋ฆฐ์ง€๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์ž‘์„ฑํ•˜๋Š” TIL์ด๋ฉฐ,  ์ถœ์ฒ˜๋Š” Clean Code์ž…๋‹ˆ๋‹ค.

 

๐Ÿ“š ๋ฒ”์œ„ :  10์žฅ ํด๋ž˜์Šค

 

 

๐Ÿ““ ์ฑ…์—์„œ ๊ธฐ์–ตํ•˜๊ณ  ์‹ถ์€ ๋‚ด์šฉ์„ ์จ๋ณด์„ธ์š”.
  • ์ข‹์€ Class ?
    • ํฌ๊ธฐ๊ฐ€ ์ž‘์€ ํด๋ž˜์Šค
    • ์ถ”์ƒํ™”๊ฐ€ ์ž˜ ๋œ ํด๋ž˜์Šค
      • class ์ถ”์ƒํ™” ๋‹จ๊ณ„
        ๋ณ€์ˆ˜ โžก static public ์ƒ์ˆ˜ โžก private ์ƒ์ˆ˜ โžก static private ๋ณ€์ˆ˜ โžก private instance ๋ณ€์ˆ˜ โžก ๋ณ€์ˆ˜ ๋ชฉ๋ก ๋‹ค์Œ ๊ณต๊ฐœ ํ•จ์ˆ˜ โžก private ํ•จ์ˆ˜ ํ˜ธ์ถœํ•˜๋Š” ํ•จ์ˆ˜
      • ๊ฐ™์€ ํŒจํ‚ค์ง€ ์•ˆ์—์„œ test code๊ฐ€ ํ•จ์ˆ˜ ํ˜ธ์ถœ or ๋ณ€์ˆ˜ ์‚ฌ์šฉ ์‹œ โžก protected ์„ ์–ธ or ํŒจํ‚ค์ง€ ์ „์ฒด๋กœ ๊ณต๊ฐœ
    • ์ž‘๋ช… ์ž˜ํ•˜๊ธฐ
      • ํด๋ž˜์Šค๋ช…์— ํ•ด๋‹น ํด๋ž˜์Šค ์—ญํ•  ์ž‘์„ฑ
      • ํด๋ž˜์Šค ์„ค๋ช… : if / or / and / but ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  25์ž ๋‚ด์™ธ
    • ํฐ class ๋ช‡ ๊ฐœ < ์ž‘์€ class ์—ฌ๋Ÿฌ ๊ฐœ
    • ์‘์ง‘๋„ โฌ‡ class
      • ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜์˜ ์ˆ˜ โฌ‡ , ๊ฐ ํด๋ž˜์Šค ๋ฉ”์„œ๋“œ - instance ๋ณ€์ˆ˜ 1๊ฐœ ์ด์ƒ ์‚ฌ์šฉ
    • ์‹œ์Šคํ…œ ๊ฒฐํ•ฉ๋„ โฌ‡ class
      • ์œ ์—ฐ์„ฑ, ์žฌ ์‚ฌ์šฉ์„ฑ ํ–ฅ์ƒ
      • ๊ฒฐํ•ฉ๋„ โฌ‡ = ๋‹ค๋ฅธ ์š”์†Œ์™€ ๋ณ€ํ™”๋กœ๋ถ€ํ„ฐ ์ž˜ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ๋‹ค๋Š” ์˜๋ฏธ
  • SRP
    • ๋‹จ์ผ ์ฑ…์ž„ ์›์น™์„ ์ง€ํ‚ค์ž.
    • ํฐ ๋‹จ์œ„๋ฅผ ์ž‘์€ ๋‹จ์œ„๋กœ ์ชผ๊ฐœ์–ด์„œ ์ž‘์„ฑ
styled

yled

 

โœ๐Ÿป ์˜ค๋Š˜ ์ฝ์€ ์†Œ๊ฐ์€? ๋– ์˜ค๋ฅด๋Š” ์ƒ๊ฐ์„ ๊ฐ€๋ณ๊ฒŒ ์ ์–ด๋ณด์„ธ์š”.

์–ด๋–ค ์š”์†Œ๋ฅผ ๋งŒ๋“ค ๋•Œ๋‚˜ ํฌ๊ธฐ๊ฐ€ ์ž‘๊ณ , ํ•œ ๊ฐ€์ง€ ๊ธฐ๋Šฅ๋งŒ ํ•˜๋ฉด์„œ, ์˜๋ฏธ๋ฅผ ํ•œ ๋ฒˆ์— ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋Š” ์ด๋ฆ„์„ ์ง“๋Š” ๊ฒƒ์ด ํด๋ฆฐ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์˜ ๊ธฐ์ดˆ๋ผ๋Š” ๊ฒƒ์„ ๋‹ค์‹œ ํ•œ๋ฒˆ ๋Š๊ผˆ๋‹ค. ํ•œ ํด๋ž˜์Šค๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๊ธฐ๋Šฅ์„ ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด, ํ•œ ๊ฐœ๋งŒ ์žˆ์–ด๋„ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์—ญํ• ์„ ํ•ด์„œ ํŽธํ•  ๊ฒƒ ๊ฐ™์ง€๋งŒ ์žฌ ์‚ฌ์šฉ์„ฑ์—์„œ๋„ ๋ถˆ๋ฆฌํ•ด์ง€๊ณ , ์ˆ˜์ •ํ•  ์ผ์ด ์ตœ์†Œํ•œ์ด์–ด์•ผ ํ•˜์ง€๋งŒ ๊ทธ๋ž˜์„œ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ ์—ฌ๋Ÿฌ ๊ฐ€์ง€๋ฅผ ๊ณ ๋ คํ•ด์„œ ๊ณ ์ณ์•ผ ํ•ด์„œ ์‹œ๊ฐ„์ด ๋งŽ์ด ์†Œ์š”๋œ๋‹ค.

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

 

 

 

๐Ÿ‘€ ๊ถ๊ธˆํ•œ ๋‚ด์šฉ์ด ์žˆ๊ฑฐ๋‚˜, ์ž˜ ์ดํ•ด๋˜์ง€ ์•Š๋Š” ๋‚ด์šฉ์ด ์žˆ๋‹ค๋ฉด ์ ์–ด๋ณด์„ธ์š”.

SRP : ๋‹จ์ผ ์ฑ…์ž„ ์›์น™ , ํด๋ž˜์Šค๋‚˜ ๋ชจ๋“ˆ์„ ๋ณ€๊ฒฝํ•  ์ด์œ ๊ฐ€ ํ•˜๋‚˜, ๋‹จ ํ•˜๋‚˜๋ฟ์ด์–ด์•ผ ํ•œ๋‹ค.

OCP : ํด๋ž˜์Šค๋Š” ํ™•์žฅ์— ๊ฐœ๋ฐฉ์ ์ด๊ณ  ์ˆ˜์ •์— ํ์‡„์ ์ด์–ด์•ผ ํ•œ๋‹ค.

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

๊ฐ์ฒด ์ง€ํ–ฅ ๊ฐœ๋ฐœ 5๋Œ€ ์›๋ฆฌ (SOLID)

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€