โ€ป ์ด ๊ธ€์€ ์ฝ”๋“œํ”„๋ ˆ์†Œ ์ฒดํ—˜๋‹จ ํ™œ๋™์„ ํ•˜๋ฉด์„œ ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค.
โ€ป SW ์œ ์ง€๋ณด์ˆ˜์„ฑ ํ–ฅ์ƒ์„ ์œ„ํ•œ Clean Code ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.
โ€ป ์ฝ”๋“œํ”„๋ ˆ์†Œ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Clean Code ๊ณผ์ •์˜ ๋ชฉํ‘œ

  • ์œ ์ง€๋ณด์ˆ˜์„ฑ ๋†’์€ SW์˜ ์ค‘์š”์„ฑ์„ ์ธ์‹ํ•œ๋‹ค
  • ์œ ์ง€๋ณด์ˆ˜์„ฑ ๋†’์€ SW๋ฅผ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•œ ๊ณ ๋ฏผ๊ฑฐ๋ฆฌ๋ฅผ ์ œ๊ณตํ•œ๋‹ค
  • ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋–จ์–ด๋œจ๋ฆฌ๋Š” Bad Smell์— ๋Œ€ํ•œ ๊ฐ์„ ์ตํžŒ๋‹ค

Clean Code ์˜ ๊ณตํ†ต์  ์˜๊ฒฌ

  • ์‚ฌ๋žŒ์ด ์ฝ๊ณ  ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋‹ค
  • ๋‹จ์ˆœํ•œ ํ•œ ๊ฐ€์ง€ ์—ญํ• ์„ ํ•˜๊ณ , ๋ช…ํ™•ํ•œ ์ด๋ฆ„(ํ‘œํ˜„)์„ ๊ฐ–๊ณ  ์žˆ๋‹ค
  • ์ค‘๋ณต์ด ์—†๋‹ค
  • ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๊ฐ€ ์žˆ๋‹ค
  • ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ณ , ๋ณ€๊ฒฝํ•˜๊ธฐ ์‰ฌ์šด ์ฝ”๋“œ

Clean Naming

์™œ Clean Naming์ด ์ค‘์š”ํ• ๊นŒ?

  • ์šฐ๋ฆฌ๋Š” ๊ฐœ๋ฐœ์˜ ์•ฝ 75%์˜ ์‹œ๊ฐ„์„ ์ฝ”๋“œ๋ฅผ ์ฝ๊ณ  ์ดํ•ดํ•˜๋Š”๋ฐ ์‚ฌ์šฉ
  • ๋ณ€์ˆ˜, ์ƒ์ˆ˜, ํ•จ์ˆ˜, ํด๋ž˜์Šค, ํŒŒ์ผ ๋“ฑ SW์˜ ์ฃผ์š” ์š”์†Œ๋Š” ์ด๋ฆ„์„ ๊ฐ€์ง
  • ์ข‹์€ ์ด๋ฆ„์€ ๋‚ด๋ถ€๋ฅผ ๋“ค์—ฌ๋‹ค๋ณด์ง€ ์•Š์•„๋„ ๋™์ž‘๊ณผ ๋ชฉ์ ์„ ์‰ฝ๊ฒŒ ์ดํ•ดํ• ์ˆ˜ ์žˆ์Œ
  • ์ข‹์€ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”๋“œ๋ฅผ ์ฝ๋Š” ์‚ฌ๋žŒ์˜ ์ธ์ง€์  ๋ถ€ํ•˜๋ฅผ ์ตœ์†Œํ™” ๊ฐ€๋Šฅ

Clean Naming ์›์น™

  • Funtion, Class ์—ญํ• ์ด ๋ช…ํ™•ํ•˜๋ฉด Naming๋„ ๋ช…ํ™•ํ•ด ์ง‘๋‹ˆ๋‹ค
  • ๋ถˆํ•„์š”ํ•œ ์ •๋ณด/๋ฐ˜๋ณต์€ ์ œ๊ฑฐํ•ด์•ผ ํ•จ
  • ์ค„์ž„๋ง(์•ฝ์–ด)๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์„ธ์š”
  • ๊ทœ์น™๊ณผ ์ผ๊ด€์„ฑ์„ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค
  • ๋™๋ฃŒ์™€ ์ƒ์˜

Clean Code : Summary

  • SW์—”์ง€๋‹ˆ์–ด๋Š” Code๋ฅผ ์ฝ๊ณ  ์ดํ•ดํ•˜๊ณ  ์ˆ˜์ •ํ•˜๋Š”๋ฐ ๋Œ€๋ถ€๋ถ„์˜ ์‹œ๊ฐ„์„ ์‚ฌ์šฉ
  • SW ์œ ์ง€๋ณด์ˆ˜๋ฅผ ํšจ์šธ์ ์œผ๋กœ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋†’์€ ๊ฐ€๋…์„ฑ์ด ํ•„์ˆ˜
  • ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ์ข‹์€ ์ด๋ฆ„์€ ์ฝ๋Š” ์‚ฌ๋žŒ์˜ ์ธ์ง€์  ๋ถ€ํ•˜๋ฅผ ์ตœ์†Œํ™” ์‹œํ‚ด
  • SW ๋ชจ๋“  ์š”์†Œ๋“ค์— ์ข‹์€ ์ด๋ฆ„ ํ•„์š”
    - Variable / Constant
    - Method / Function
    - Class / File
  • ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ "์ด ์ด๋ฆ„์ด ๋‚ด ๋™๋ฃŒ๊ฐ€ ์‰ฝ๊ฒŒ ์ดํ•ด ํ• ์ˆ˜ ์žˆ์„๊นŒ?" ๋ผ๋Š” ์งˆ๋ฌธ
  • ๋™๋ฃŒ๋“ค๊ณผ ํ•จ๊ป˜ํ•˜๋Š” ์ง€์†์ ์ธ ๊ฐœ์„ 

Clean Method

Clean Method

  • Method / Function์€ SW์—์„œ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ด ๋˜๋Š” ๋ชจ๋“ˆ
  • Method๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์‚ฌ๋žŒ์ด ์‚ฌ์šฉํ•˜๊ธฐ ์šฉ์ด ํ•ด์•ผ ํ•จ
  • Method๋ฅผ ์œ ์ง€๋ณด์ˆ˜ ํ•˜๋Š” ์‚ฌ๋žŒ์ด ์ดํ•ดํ•˜๊ณ , ๋ณ€๊ฒฝํ•˜๊ธฐ ์šฉ์ดํ•ด์•ผ ํ•จ
  • Method๋ฅผ ์œ ์ง€๋ณด์ˆ˜ ํ•˜๋Š” ์‚ฌ๋žŒ์ด ํ…Œ์ŠคํŠธ ํ•˜๊ธฐ ์šฉ์ดํ•ด์•ผ ํ•จ

Clean Method Principles

  • ๊ฐ€๋Šฅํ•œ ์ถฉ๋ถ„ํžˆ ์ž‘์•„์•ผ ํ•œ๋‹ค
  • ํ•œ ๊ฐ€์ง€๋ฅผ ํ•ด์•ผํ•œ๋‹ค. ๊ทธ ํ•œ๊ฐ€์ง€๋ฅผ ์ž˜ํ•ด์•ผ ํ•œ๋‹ค
  • ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅํ•ด์•ผ ํ•œ๋‹ค
  • ์ค‘๋ณต์ด ์—†์–ด์•ผ ํ•œ๋‹ค

Clean Method Parameter ์›์น™

  • Method๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์‚ฌ๋žŒ์˜ ์ธ์ง€์  ๋ถ€ํ•˜๋ฅผ ์ตœ์†Œ๋กœ ๋งŒ๋“ค์–ด ์ฃผ์–ด์•ผ ํ•จ
  • Method๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ๋งˆ๋‹ค ๋‚ด๋ถ€ ์ฝ”๋“œ๋ฅผ ๋ณด๊ฑฐ๋‚˜ API ๋ฌธ์„œ๋ฅผ ๋ณด์ง€ ์•Š๊ฒŒํ•ด์•ผํ•จ
  • Parameter์˜ ๊ฐœ์ˆ˜๋Š” ๊ฐ€๋Šฅํ•œ ์ ์–ด์•ผ ํ•จ

Clean Method : Summary

  • Method๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์‚ฌ๋žŒ์ด ์‚ฌ์šฉํ•˜๊ธฐ ์šฉ์ดํ•ด์•ผ ํ•จ
  • Method๋ฅผ ์œ ์ง€๋ณด์ˆ˜ ํ•˜๋Š” ์‚ฌ๋žŒ์ด ์ดํ•ดํ•˜๊ณ , ๋ณ€๊ฒฝํ•˜๊ธฐ ์šฉ์ดํ•ด์•ผ ํ•จ
  • Method๋ฅผ ์œ ์ง€๋ณด์ˆ˜ ํ•˜๋Š” ์‚ฌ๋žŒ์ด ํ…Œ์ŠคํŠธ ํ•˜๊ธฐ ์šฉ์ดํ•ด์•ผ ํ•จ

Clean Method Principles : Summary

  • ๊ฐ€๋Šฅํ•œ ์ถฉ๋ถ„ํžˆ ์ž‘์•„์•ผ ํ•œ๋‹ค
  • ํ•œ ๊ฐ€์ง€๋ฅผ ํ•ด์•ผํ•œ๋‹ค. ๊ทธ ํ•œ๊ฐ€์ง€๋ฅผ ์ž˜ํ•ด์•ผ ํ•œ๋‹ค
  • ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅํ•ด์•ผ ํ•œ๋‹ค
  • ์ค‘๋ณต์ด ์—†์–ด์•ผ ํ•œ๋‹ค

Clean Method๋ฅผ ์œ„ํ•ด์„œ : Summary

  • ์ ์€ Parameter ๊ฐœ์ˆ˜
  • ๋ช…ํ™•ํ•œ Clean Name
  • ์ž‘์€ ํฌ๊ธฐ
  • ๋ช…ํ™•ํ•œ ์—ญํ• 
  • ์ค‘๋ณต ์—†๋Š” ์ƒํƒœ
  • ๋†’์€ ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€, ํ…Œ์ŠคํŠธ ์šฉ์ด์„œ

Clean Method๋Š” ํ•˜๋ฃจ์•„์นจ์— ๋งŒ๋“ค์–ด์ง€์ง€ ์•Š๋Š”๋‹ค : Summary

  • ์ถฉ๋ถ„ํžˆ ์ข‹์€์ง€์— ๋Œ€ํ•œ ์ง€์†์ ์ธ ์˜์‹ฌ, ์งˆ๋ฌธ ๊ทธ๋ฆฌ์†Œ ๊ฐœ์„ 
  • ์ข‹์€ Method์˜ ๊ธฐ์ค€์— ๋Œ€ํ•œ ์—ด๋ฆฐ ํ† ๋ก ๊ณผ ๊ทธ๋กœ ๋งŒ๋“ค์–ด์ง€๋Š” ์ปจ์„ผ์„œ์Šค
  • ๋ชจ๋“  ๋™๋ฃŒ๋“ค์ด ํ•จ๊ป˜ํ•˜๋Š” ์ฝ”๋“œ ํ’ˆ์งˆ ๊ฐœ์„  ๋ฌธํ™”

Clean Comment

Comment

  • Comment๋Š” Code์— ๋Œ€ํ•œ ์‚ฌ๋žŒ์ด ์ž€์„ ์ˆ˜ ์žˆ๋Š” ๋ถ€๊ฐ€ ์„ค๋ช…
  • ์‚ฌ๋žŒ์ด Code๋ฅผ ๋” ์‰ฝ๊ฒŒ ์ดํ•ดํ• ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ๋ชฉ์ 
  • ์ผ๋ฐ˜์ ์œผ๋กœ Compiler/Interpreter๋Š” Comment๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ๋ฌด์‹œ

Clean Comment Principle

  • Comment๋Š” ํ•„์š”์•…์ด๋‹ค
  • Comment๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์ƒํ™ฉ์—์„œ ์‚ฌ์šฉํ•˜์ง€ ๋ง์•„์•ผ ํ•œ๋‹ค
  • ๊ทธ๋Ÿฌ๋‚˜ Comment๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๋ช‡๊ฐ€์ง€ ์˜ˆ์™ธ์ƒํ™ฉ์ด ์žˆ๋‹ค

Comment๋ณด๋‹ค Code ๊ทธ ์ž์ฒด๊ฐ€ ์˜๋ฏธ๊ฐ€ ์žˆ์–ด์•ผ ํ•จ

  • Comment๋กœ ๋ถ€๊ฐ€ ์„ค๋ช…์ด ํ•„์š”ํ•˜๋ฉด Code๊ฐ€ ์ถฉ๋ถ„ํžˆ ์˜๋ฏธ ์žˆ์ง€ ๋ชปํ•˜๋‹ค๋Š”๊ฒƒ
  • ์˜๋ฏธ์žˆ๋Š” ์ด๋ฆ„, ๋ช…ํ™•ํ•œ Code๋Š” ์–ด๋ ต๊ณ , Comment๋Š” ์‰ฌ์›€
  • Comment์— ์˜์ง€ํ•˜๊ธฐ ๋ณด๋‹ค ์˜๋ฏธ์žˆ๋Š” Code๋ฅผ ์ž‘์„ฑํ•˜๋ ค๋Š” ๋…ธ๋ ฅ์ด ํ•„์š”

Comment๋Š” ์ตœ์‹  ์ •๋ณด๋ฅผ ๋‹ด์ง€ ๋ชปํ•จ

  • ์ฒ˜์Œ ์‹ ๊ทœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ• ๋•Œ๋Š” Comment๋„ ์ •์„ฑ์Šค๋Ÿฝ๊ฒŒ ์ž‘์„ฑ
  • Code ๊ฐ€ ๋ฐ”๋€Œ๋ฉด? Comment๋„ ํ•ญ์ƒ ์ตœ์‹  ์ •๋ณด๋กœ ์ˆ˜์ •ํ•˜๋Š”๊ฐ€?
  • Comment์˜ ์ •๋ณด๋Š” ์ž˜๋ชป๋œ, ์˜ค๋ž˜๋œ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ์„ ๊ฐ€๋Šฅ์„ฑ ๋†’์Œ

Comment๋Š” ๋ถˆํ•„์š”ํ•˜๊ณ  ์ค‘๋ณต๋œ ์ •๋ณด๋ฅผ ํฌํ•จ

  • Code๋กœ ์˜๋ฏธ๋ฅผ ํ‘œํ˜„ํ•˜๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ
  • ์ฝ”๋“œ์˜ ์ˆ˜์ • ์ด๋ ฅ์„ ํ‘œํ˜„ํ•˜๋Š” Comment
    - ํ˜•์ƒ ๊ด€๋ฆฌ ๋„๊ตฌ๋กœ ์ถฉ๋ถ„ํžˆ ์ •๋ณด๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ์Œ

Clean Comment

  • Comment๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๊ฒƒ
  • ์ €์ž‘๊ถŒ ๋“ฑ์„ ๋ช…์‹œํ•˜๋Š” Comment
  • ๋‹ค์ˆ˜๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” Open API์˜ ๋ฌธ์„œํ™”
  • ์ด๋ฆ„๋งŒ์œผ๋กœ ์ถฉ๋ถ„ํžˆ ์˜๋ฏธ๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ ์–ด๋ ค์šด ๊ฒฝ์šฐ
  • To Do Comment

Clean Comment : Summary

  • Comment๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ Bad Smell
    - Code๋กœ ์ถฉ๋ถ„ํžˆ ์˜๋ฏธ๋ฅผ ์„ค๋ช…ํ•˜์ง€ ๋ชปํ•จ
    - ๋ถˆํ•„์š”ํ•œ, ์ค‘๋ณต์ ์ธ ์ •๋ณด๋ฅผ ์ œ๊ณต
    - ์ž˜๋ชป๋œ ์ •๋ณด๋ฅผ ์ œ๊ณต
  • Comment๋ฅผ ๊ฐ€๊ธ‰์  ํ”ผํ•˜๊ณ  Code๋กœ ์˜๋ฏธ๋ฅผ ํ‘œํ˜„ํ•ด์•ผ ํ•จ
  • Clean Comment ์˜ˆ์™ธ ์ƒํ™ฉ์—๋Š” ์ ์ ˆํ•œ Comment์‚ฌ์šฉํ•„์š”

Clean Formatting

๋ฌธํ•™์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ

  • Donald Knuth์— ์˜ํ•ด ์ฃผ์žฅ๋œ ๊ฐœ๋…
  • ์ฝ”๋“œ๋Š” ์‚ฌ๋žŒ์ด ์ฝ๋„๋ก ๋งŒ๋“ค์–ด์ง€๋Š” ๊ฒƒ์ด ์šฐ์„ 
  • ๋ฌธํ•™ ์ž‘ํ’ˆ์„ ์ฝ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ฝ”๋“œ๋ฅผ ์ฝ์„์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์–ด์ ธ์•ผ ํ•จ
  • ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ž€ ์ปดํ“จํ„ฐ๊ฐ€ ์–ด๋–ค ๋™์ž‘์„ ํ•˜๊ธฐ ์›ํ•˜๋Š”์ง€ "์‚ฌ๋žŒ์—๊ฒŒ ์„ค๋ช…"ํ•˜๋Š” ํ–‰์œ„

Code Formatting ์ด๋ž€?

  • Code Formatting์€ ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ๊ณผ ์ดํ•ด๋„๋ฅผ ๋†’์—ฌ์ฃผ๋Š” ์ผ๋ จ์˜ ์ž‘์—…
  • ์ˆ˜์ง์  Formatting๊ณผ ์ˆ˜ํ‰์  Formatting ์›์น™์œผ๋กœ ๋ถ„๋ฅ˜๋จ

์ˆ˜์ง์ (Vertical) Formatting

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

์ˆ˜ํ‰์ (Horizontal) Formatting

  • ํ•˜๋‚˜์˜ ์ฝ”๋“œ ํ–‰์—์„œ ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ง„ํ–‰๋œ ํ๋ฆ„๊ณผ ๊ด€๋ จ๋œ ์ฝ”๋“œ ์ž‘์„ฑ ๊ทœ์น™
  • ๋“ค์—ฌ์“ฐ๊ธฐ, ์ฝ”๋“œ ๊ฐ„ ๊ฐ„๊ฒฉ, ์ฝ”๋“œ ํ–‰์˜ ๋„“์ด ๋“ฑ์ด ํฌํ•จ
  • ๋“ค์—ฌ์“ฐ๊ธฐ๋ฅผ ์ ๊ทน์ ์œผ๋กœ ํ™œ์šฉ
  • ํ•œ์ค„์˜ ๊ธด ์ฝ”๋“œ๋ฅผ ์—ฌ๋Ÿฌ์ค„์˜ ์งง์€ ์ฝ”๋“œ๋กœ ๋ถ„๋ฆฌ
  • ์ˆ˜ํ‰์ •๋ ฌ์€ ์ค‘์š”ํ•˜์ง€ ์•Š์Œ

Clean Formatting : Summary

  • ์ข‹์€ ์ฝ”๋“œ๋Š” ๋ฌธํ•™ ์ž‘ํ’ˆ๊ณผ ๊ฐ™์ด ์ฝ์„์ˆ˜ ์žˆ์–ด์•ผํ•จ
  • Formatting์€ ๋™์ž‘์—๋Š” ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์œผ๋‚˜ ๊ฐ€๋…์„ฑ์—๋Š” ํฌ๊ฒŒ ์˜ํ–ฅ์„ ๋ฏธ์นจ
  • ์กฐ์ง ๋‚ด ๊ทœ์น™์„ ์ •ํ–์•ผ ํ•˜๊ณ , ๋ชจ๋“  ๊ฐœ๋ฐœ์ž๋Š” ๊ทœ์น™์— ๋”ฐ๋ผ Formattingํ•ด์•ผํ•จ
  • ์ฝ”๋“œ ๋ฆฌ๋ทฐ์™€ ์ •์  ๋ถ„์„ ๋„๊ตฌ๋ฅผ ํ™œ์šฉํ•˜์—ฌ Formatting์„ ์ง€์†์ ์œผ๋กœ ํ™•์ธํ•ด์•ผ ํ•จ

Clean Control Structures

Control Structures๋ž€?

  • ์กฐ๊ฑด ๋ฃจํ”„, ํ๋ฆ„์€ ์ œ์–ดํ•˜๋Š” ์„ ์–ธ๋ฌธ

Control Structures ์™€ Clean Code

  • Control Structures๋Š” ์ฝ”๋“œ ๋ณต์žก๋„์— ๊ฐ€์žฅ ํฐ ์˜ํ–ฅ์„ ์ฃผ๋Š”์š”์†Œ
  • ํŠนํžˆ ์ค‘์ฒฉ๋œ Control Structures๋Š” ์ฝ”๋“œ ๊ฐ€๋…์„ฑ, ํ…Œ์ŠคํŠธ ์šฉ์ด์„ฑ ๋–จ์–ด์ง€๊ณ , ๋ณต์žก๋„๋Š” ์˜ฌ๋ผ๊ฐ

Clean Control Structures

  • ๊ฐœ๋ฐœ ์ดˆ๊ธฐ๋ถ€ํ„ฐ ์ฝ”๋“œ ๋ณต์žก๋„๋ฅผ ๊ณ ๋ คํ•œ Control Structures์˜ ์„ค๊ณ„๊ฐ€ ์ค‘์š”
    - ์ฝ๊ธฐ ์‰ฌ์šด ์กฐ๊ฑด๋ฌธ
    • Fail Fast!, Early Return!
    • ์ตœ๋Œ€ํ•œ ๊ธ์ •์œผ๋กœ ํ‘œํ˜„ํ•˜๋ผ

Clean Control Structures : Summary

  • Control Structures๋Š” ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์œผ๋ฉด ๋ณต์žก๋„๋ฅผ ์ฆ๊ฐ€์‹œํ‚ด
    - ๊ฐ€๋…์„ฑ์„ ์‹ฌ๊ฐํ•˜๊ฒŒ ์ €ํ•ดํ•˜๊ณ 
    • ํ…Œ์ŠคํŠธ๋ฅผ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ฌ
  • Control Structures ์ตœ๋Œ€ํ•œ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ณ  ์ค‘์ฒฉ์ด ์ ์€ ๋ฐฉํ–ฅ์œผ๋กœ ์„ค๊ณ„, ์ž‘์„ฑ
  • Fail Fast!, Early Return!๋˜๋Š” Method ์ถ”์ถœ ๊ธฐ๋ฒ•์œผ๋กœ ๊ฐ€๋…์„ฑ ํ–ฅ์ƒ์ด ๊ฐ€๋Šฅํ•œ์ง€ ํ•ญ์ƒ ํ™•์ธํ•ด์•ผํ•จ

Clean Code๋ฅผ ์œ„ํ•œ Code Refactoring

Refactoring

  • SWํ’ˆ์งˆ ํ–ฅ์ƒ์„ ๋ชฉ์ ์œผ๋กœ ๊ธฐ๋Šฅ์˜ ๋ณ€๊ฒฝ ์—†์ด, ๋‚ด๋ถ€ ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ธฐ์ˆ 

Refactoring ์ฒ ํ•™

  • ํ‹ฐ๋Œ๋ชจ์•„ ํƒœ์‚ฐ
  • ๊ธฐ์กด ๊ธฐ๋Šฅ์— ๋ณ€๊ฒฝ์„ ๊ฐ€ํ•˜์ง€ ์•Š๋Š” ์ˆ˜์ค€์˜ ์•„์ฃผ ์ž‘์€ ์ฝ”๋“œ ๊ฐœ์„  ์ž‘์—…
  • ํ•˜๋‚˜ ํ•˜๋‚˜์˜ Refactoring์€ ๋„ˆ๋ฌด ์ž‘์•„์„œ ํฐ์˜๋ฏธ ์—†์Œ
  • ์ž‘์€ ๊ฐœ์„ ์ด ์Œ“์—ฌ ์˜๋ฏธ์žˆ๋Š” ํ’ˆ์งˆํ–ฅ์ƒ์ด ๊ฐ€๋Šฅ

Code Bad Smell

  • Clean ํ’ˆ์งˆ์€ ์ €ํ•ด ํ• ์ˆ˜ ์žˆ๋Š” ๊ฐ€๋Šฅ์„ฑ์„ ๊ฐ€์ง„ ์ฝ”๋“œ๊ฐ€ ๋ณด๋‚ด๋Š” ๊ฒฝ๊ณ  ์‹ธ์ธ
  • Code Bad Smell์€ ๊ฒฐํ•จ์ด๋‚˜ ์—๋Ÿฌ๋Š” ์•„๋‹˜
  • 22๊ฐœ์˜ Code Bad Smell ์ข…๋ฅ˜

Refactoring ์นดํƒˆ๋กœ๊ทธ

  • Code Bad Smell์— ๋Œ€ํ•œ ๋‹ค์–‘ํ•œ ๊ฐœ์„  ์ ๋žต๋“ค์˜ ๋ชจ์Œ
  • Refactoring์€ ์•„์ฃผ ์ž‘์€ ๊ฐœ์„  ํ™œ๋™
  • ๋„ˆ๋ฌด ๋‹น์—ฐํ•˜๋‹ค๊ณ  ํŒ๋‹จ ๋ ๋งŒํ•œ ์ „๋žต๋“ค๋„ ๋‹ค์ˆ˜ ์กด์žฌ

Code Refactoring : Summary

  • ReFacoring ์€ ๋งค์ผ ์ง€์†์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์€ ์ฝ”๋“œ ๊ฐœ์„  ์ž‘์—…
  • ํ‹ฐ๋Œ๋ชจ์•„ ํƒœ์‚ฐ
  • ๊ฐœ์„ ํ•ด์•ผํ•  ์ฝ”๋“œ์˜ Bad Smell์„ ๋งก๋Š” ๋ฏผ๊ฐํ•œ ์ฝ”๋ฅผ ๊ฐ–๋„๋ก ํ›ˆ๋ จํ•ด์•ผํ•จ
  • ์ •๋ฆฌ๋œ Code Bad Smell๊ณผ Refactoring Catalog๋ฅผ ์ฐธ๊ณ ํ•˜๋Š”๊ฑด ์ข‹์€ ์Šต๊ด€
profile
์ž˜ํ•ด ๋ณด๊ฒ ๋‹ค!

0๊ฐœ์˜ ๋Œ“๊ธ€