๐Ÿ“œ CleanCode

[CleanCode]ํ•จ์ˆ˜-๋Š” ์ž‘๊ฒŒ+๋‚ด๋ ค๊ฐ€๊ธฐ ๊ทœ์น™

๋‰ด์ด NUEY 2024. 8. 14. 20:01
๋ฐ˜์‘ํ˜•

 

ํ”„๋กœ๊ทธ๋žจ์˜ ๊ธฐ๋ณธ๋‹จ์œ„ :
ํ•จ์ˆ˜

 

 ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ดˆ์ฐฝ๊ธฐ์—๋Š” ์‹œ์Šคํ…œ์„ ๋ฃจํ‹ด๊ณผ ํ•˜์œ„๋ฃจํ‹ด์œผ๋กœ ๋‚˜๋ˆด๊ณ 

ํฌํŠธ๋ž€๊ณผ PL/1 ์‹œ์ ˆ์—๋Š” ์‹œ์Šคํ…œ์„ ํ”„๋กœ๊ทธ๋žจ, ํ•˜์œ„ ํ”„๋กœ๊ทธ๋žจ, ํ•จ์ˆ˜๋กœ ๋‚˜๋ˆด๋‹ค.

์ง€๊ธˆ์€ ํ•จ์ˆ˜๋งŒ ๋‚จ์•„์žˆ๋‹ค.

 


 

์ž‘๊ฒŒ ๋งŒ๋“ค์–ด๋ผ.
๊ฐ€๋กœ 150์ž, ์„ธ๋กœ 100์ค„์„ ๋„˜์–ด์„œ๋Š” ์•ˆ๋œ๋‹ค.

 

 ์ฑ…์—์„œ๋Š” 20์ค„๋„ ๊ธธ๋‹คํ•œ๋‹ค.

์ด๋ ‡๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์ œ์‹œํ•˜์ž๋ฉด

2๋‹จ/2์ค‘ ์ œ์–ด๋ฌธ๊นŒ์ง€ ํ—ˆ์šฉ

  1. ์ œ์–ด๋ฌธ is/else๋ฌธ while๋ฌธ ๋“ฑ์— ๋“ค์–ด๊ฐ€๋Š” ๋ธ”๋ก์€ ํ•œ์ค„์ด์–ด์•ผ ํ•œ๋‹ค.
  2. ๋Œ€๊ฐœ ๊ฑฐ๊ธฐ์„œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.
  3. ๋”ฐ๋ผ์„œ if๋ฌธ ์•ˆ์— ๋‹ค์‹œ if๋ฌธ์„ ์“ฐ๋Š” ์‹์˜
    ์ค‘์ฒฉ ์ œ์–ด๋ฌธ 2๋‹จ์„ ์ดˆ๊ณผํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค.

ํ•จ์ˆ˜๋Š” ํ•œ๊ฐ€์ง€๋ฅผ ํ•ด์•ผํ•œ๋‹ค

 

  • ๊ทธ ํ•œ๊ฐ€์ง€๋ฅผ ์ž˜ํ•ด์•ผ ํ•œ๋‹ค.
  • ํ•จ์ˆ˜์˜ ์˜๋ฏธ๋ฅผ ์œ ์ง€ํ•˜๋Š” ์ˆ˜์ค€๊นŒ์ง€ ์ค„์ธ๋‹ค.
  • ํ•จ์ˆ˜ ์•ˆ ์ฝ”๋“œ๋ฅผ ๋‹ค๋ฅธ ํ•จ์ˆ˜๋กœ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด
    →๊ทธ ํ•จ์ˆ˜๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€๋ฅผ ํ•˜๋Š” ์…ˆ์ด๋‹ค.

 

๋‚ด๋ ค๊ฐ€๊ธฐ ๊ทœ์น™

 

์ฐธ๊ณ ๋กœ ์ฑ… ์ €์ž๊ฐ€ ๋งŒ๋“  ๊ทœ์น™์ด๋ฆ„์ธ๋ฐ ์ ์ ˆํ•œ ์ด๋ฆ„์ด๋ผ ๋™์˜ํ•œ๋‹ค.

method0 ์—์„œ method1๊ณผ 2๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ์žˆ๋‹ค.

 

  1.  method0์€ 1๊ณผ 2๋ณด๋‹ค ๋งŽ์€ ์ผ์„ํ•œ๋‹ค.
  2. ๋”ฐ๋ผ์„œ method0์˜ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ผ์„ ๋” ๋‹จ์ˆœํ•˜๊ฒŒ ์••์ถ•ํ–ˆ์œผ๋ฏ€๋กœ
    ์ถ”์ƒํ™”์ˆ˜์ค€์ด ๋” ๋†’์œผ๋ฏ€๋กœ ์ด๋ฅผ ๊ณ ์ฐจ์›์ด๋ผ ํ•˜๊ฒ ๋‹ค.
  3. method1๊ณผ method2๋Š” ๋ฐ˜๋Œ€๋กœ 0์— ๋น„ํ•ด ์ €์ฐจ์›์ด๋ผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ณ ์ฐจ์›→์ €์ฐจ์› ํ•จ์ˆ˜๋ฅผ ๋”ฐ๋ผ ์ด์•ผ๊ธฐ์ฒ˜๋Ÿผ ์ฝ์–ด๊ฐ€๋Š” ๊ฒƒ์„ ๋‚ด๋ ค๊ฐ€๊ธฐ๋ผ๊ณ  ํ•œ๋‹ค.

ํ•จ์ˆ˜ ๋‹น ์ถ”์ƒํ™” ์ˆ˜์ค€์€ ํ•˜๋‚˜๋กœ

 

๋งŒ์•ฝ ํ•œ ํ•จ์ˆ˜ ๋‚ด์— ๊ณ ์ฐจ์›๊ณผ ์ €์ฐจ์› ํ•จ์ˆ˜๊ฐ€ ์„ž์—ฌ์žˆ๋‹ค๋ฉด

ํ•จ์ˆ˜๋ฅผ ๋ชจ๋‘ ๋”ฐ๋ผ๊ฐ€๋ณด์ง€ ์•Š๋Š” ํ•œ ํ•ด๋‹น ํ•จ์ˆ˜๊ฐ€ ๋ฌด์Šจ ์ผ์„ ํ•˜๋Š” ์ง€ ์•Œ ์ˆ˜ ์—†๋‹ค.

๋น„์Šทํ•˜๊ฒŒ ๊ณ ์ฐจ์›→์ €์ฐจ์› →๊ณ ์ฐจ์› ์‹์˜ ์ž˜๋ชป๋œ ํ๋ฆ„์„ ํ”ผํ•ด์•ผํ•œ๋‹ค.


Switch๋ฌธ

Switch๋ฌธ์€ ๋ณธ์งˆ์ ์œผ๋กœ N๊ฐœ์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ฏ€๋กœ ์ž‘๊ฒŒ ๋งŒ๋“ค๊ธฐ ์–ด๋ ต๋‹ค.

์•ˆ ์ข‹์€ ์˜ˆ

์œ„ ํ•จ์ˆ˜์—๋Š” ๋„ค๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค.

  1. ํ•จ์ˆ˜๊ฐ€ ๊ธธ๋‹ค.
    ์ƒˆ ์ง์› ์œ ํ˜•์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๋” ๊ธธ์–ด์งˆ ๊ฒƒ์ด๋‹ค.
  2. ํ•œ๊ฐ€์ง€ ์ž‘์—…๋งŒ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๋Š”๋‹ค.
  3. SRP ์œ„๋ฐ˜
    Single Responsibility Principle : ํด๋ž˜์Šค๋Š” ํ•˜๋‚˜์˜ ์ฑ…์ž„๋งŒ์„ ๊ฐ€์ ธ์•ผํ•œ๋‹ค.
  4. OCP ์œ„๋ฐ˜
    Open Closed Principle : ๊ธฐ์กด์˜ ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์œผ๋ฉด์„œ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๊ฐ€ ๋˜์–ด์•ผ ํ•œ๋‹ค.

๊ฐ€์žฅ ์œ„ํ—˜ํ•œ ๋ฌธ์ œ๋กœ, ๊ธ‰์—ฌ ์ •์‚ฐ์„ ์œ„ํ•œ ๋” ๋งŽ์€ ํ•จ์ˆ˜๋“ค์ด ์กด์žฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด๋‹ค.

์ด๋ฅผ ๊ฐœ์„ ํ•œ ํ•จ์ˆ˜๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

  1. switch๋ฌธ์„ ์ถ”์ƒ ํŒฉํ† ๋ฆฌ์— ์ˆจ๊ธด ํ›„ ์•„๋ฌด์—๊ฒŒ๋„ ๋ณด์—ฌ์ฃผ์ง€ ์•Š๋Š”๋‹ค.
  2. ํŒฉํ† ๋ฆฌ๋Š” switch๋ฌธ์„ ํ†ตํ•ด ์ ์ ˆํ•œ Employee ํŒŒ์ƒ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑnewํ•œ๋‹ค.
  3. ์ด๋ ‡๊ฒŒ ๋‹คํ˜•์„ฑ์„ ํ†ตํ•ด ์‹ค์ œ ํŒŒ์ƒ ํด๋ž˜์Šค์˜ ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋œ๋‹ค.
switch๋ฌธ์„ ๋‹คํ˜•์„ฑ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์ฝ”๋“œ๋กœ ํ•œ๋ฒˆ ์ •๋„๋งŒ ํ—ˆ์šฉํ•œ๋‹ค.
์ƒ์† ๊ด€๊ณ„์— ์ˆจ๊ธด ํ›„์—๋Š” ๋‹ค๋ฅธ ์ฝ”๋“œ์— ๋…ธ์ถœํ•˜์ง€ ์•Š๋Š”๋‹ค.
๋ฌผ๋ก  ๋ถˆ๊ฐ€ํ”ผํ•œ ์ƒํ™ฉ๋„ ์žˆ๋‹คใ…Ž

 

 

 

๋ฐ˜์‘ํ˜•