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

์ฑ…/CleanCode

โœจ Clean Code 2์žฅ: ์˜๋ฏธ ์žˆ๋Š” ์ด๋ฆ„

๐Ÿ“Œ ์˜๋ฏธ๋ฅผ ๋ถ„๋ช…ํžˆ ๋ฐํ˜€๋ผ

  • ์ข‹์€ ์ด๋ฆ„์„ ์ง€์œผ๋ ค๋ฉด ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ์ง€๋งŒ, ์ข‹์€ ์ด๋ฆ„์œผ๋กœ ์ ˆ์•ฝํ•˜๋Š” ์‹œ๊ฐ„์ด ํ›จ์”ฌ ๋” ๋งŽ๋‹ค.
  • ๋ณ€์ˆ˜, ํ•จ์ˆ˜, ํด๋ž˜์Šค ์ด๋ฆ„์€ ์กด์žฌ ์ด์œ , ์ˆ˜ํ–‰ ๊ธฐ๋Šฅ, ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋‹ตํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  • ์ฃผ์„์ด ํ•„์š”ํ•˜๋‹ค๋ฉด ์˜๋„๋ฅผ ๋ถ„๋ช…ํžˆ ๋“œ๋Ÿฌ๋‚ด์ง€ ๋ชปํ–ˆ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.
  • ์˜๋„๊ฐ€ ๋“œ๋Ÿฌ๋‚œ๋‹ค๋ฉด ์ฝ”๋“œ ์ดํ•ด์™€ ๋ณ€๊ฒฝ์ด ์šฉ์ดํ•ด์ง„๋‹ค.

๐Ÿ“Œ ๊ทธ๋ฆ‡๋œ ์ •๋ณด๋ฅผ ํ”ผํ•˜๋ผ

  • ์ฝ”๋“œ์˜ ์˜๋ฏธ๋ฅผ ํ๋ฆด ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ฆ‡๋œ ๋‹จ์„œ๋ฅผ ๋‚จ๊ฒจ์„œ๋Š” ์•ˆ ๋œ๋‹ค.
  • ex) accountList -> List๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ์—๊ฒŒ ํŠน์ˆ˜ํ•œ ์˜๋ฏธ์ด๋‹ค.
  • ์œ ์‚ฌํ•œ ๊ฐœ๋…์€ ์œ ์‚ฌํ•œ ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค. (์ผ๊ด€์„ฑ์ด ๋–จ์–ด์ง€๋Š” ํ‘œ๊ธฐ๋ฒ•์€ ๊ทธ๋ฆ‡๋œ ์ •๋ณด)

๐Ÿ“Œ ์˜๋ฏธ ์žˆ๊ฒŒ ๊ตฌ๋ถ„ํ•˜๋ผ

  • ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ํ†ต๊ณผํ• ์ง€๋ผ๋„ ์—ฐ์†๋œ ์ˆซ์ž๋ฅผ ๋ง๋ถ™์ด๊ฑฐ๋‚˜ ๋ถˆ์šฉ์–ด๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ์‹์€ ์ ์ ˆํ•˜์ง€ ๋ชปํ•˜๋‹ค.
  • ๋ถˆ์šฉ์–ด๋Š” ์ค‘๋ณต์ด๋‹ค. (๋ณ€์ˆ˜ ์ด๋ฆ„์„ variable, ํ‘œ ์ด๋ฆ„์„ table์ด๋ผ๋Š” ๋‹จ์–ด๋„ ๋งˆ์ฐฌ๊ฐ€์ง€)

๐Ÿ“Œ ๋ฐœ์Œํ•˜๊ธฐ ์‰ฌ์šด ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๋ผ

๋ฐœ์Œํ•˜๊ธฐ ์–ด๋ ค์šด ์ด๋ฆ„์€ ํ† ๋ก ํ•˜๊ธฐ๋„ ์–ด๋ ต๋‹ค.

๐Ÿ“Œ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์‰ฌ์šด ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๋ผ

  • ๊ธด ์ด๋ฆ„์ด ์งง์€ ์ด๋ฆ„๋ณด๋‹ค ๋‚˜์„ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.
  • ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์‰ฌ์šด ์ด๋ฆ„์ด ์ƒ์ˆ˜๋ณด๋‹ค ์ข‹๋‹ค.

๐Ÿ“Œ ์ธ์ฝ”๋”ฉ์„ ํ”ผํ•˜๋ผ

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

๐Ÿ“Œ ์ž์‹ ์˜ ๊ธฐ์–ต๋ ฅ์„ ์ž๋ž‘ํ•˜์ง€ ๋งˆ๋ผ

  • ๋ฌธ์ž ํ•˜๋‚˜๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๋ณ€์ˆ˜ ์ด๋ฆ„์€ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค. (๋ฃจํ”„ ๋ฐ˜๋ณต ํšŸ์ˆ˜๋ฅผ ์„ธ๋Š” ๋ณ€์ˆ˜๋Š” ๊ดœ์ฐฎ๋‹ค)
  • ๋ช…๋ฃŒํ•จ์ด ์ตœ๊ณ ์ด๋ฉฐ, ๋‚จ๋“ค์ด ์ดํ•ดํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๋‚ด๋†“์•„์•ผ ํ•œ๋‹ค.

๐Ÿ“Œ ํด๋ž˜์Šค ์ด๋ฆ„

  • ๋ช…์‚ฌ๋‚˜ ๋ช…์‚ฌ๊ตฌ๊ฐ€ ์ ์žกํ•˜๋‹ค.
  • Manager, Processor, Data, Info ๋“ฑ๊ณผ ๊ฐ™์€ ๋‹จ์–ด๋Š” ํ”ผํ•˜๊ณ , ๋™์‚ฌ๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

๐Ÿ“Œ ๋ฉ”์„œ๋“œ ์ด๋ฆ„

  • ๋™์‚ฌ๋‚˜ ๋™์‚ฌ๊ตฌ๊ฐ€ ์ ํ•ฉํ•˜๋‹ค.
  • ex) postPayment, deletePage, save ๋“ฑ

๐Ÿ“Œ ํ•œ ๊ฐœ๋…์— ํ•œ ๋‹จ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ผ

  • ํด๋ž˜์Šค๋งˆ๋‹ค fetch, retrieve, get์œผ๋กœ ์ œ๊ฐ๊ฐ ๋ถ€๋ฅธ๋‹ค๋ฉด ํ˜ผ๋ž€์Šค๋Ÿฝ๋‹ค.
  • ์ผ๊ด€์„ฑ ์žˆ๋Š” ์–ดํœ˜๋Š” ์ฝ๋Š” ์‚ฌ๋žŒ์—๊ฒŒ ๋ฐ˜๊ฐ‘๊ฒŒ ์—ฌ๊ธธ ์„ ๋ฌผ์ด๋‹ค.

๐Ÿ“Œ ๋ง์žฅ๋‚œ์„ ํ•˜์ง€ ๋งˆ๋ผ

๋ชจ๋“  add๋ฉ”์„œ๋“œ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ๋ฐ˜ํ™˜๊ฐ’์ด ์˜๋ฏธ์ ์œผ๋กœ ๊ฐ™์œผ๋ฉด ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค.
ํ•˜์ง€๋งŒ ๋งฅ๋ฝ์ด ๋‹ค๋ฅธ ๊ฒฝ์šฐ insert๋‚˜ append๋ผ๋Š” ์ด๋ฆ„์ด ์ ๋‹นํ•˜๋‹ค.
๋”ฐ๋ผ์„œ ๋ง์žฅ๋‚œ์„ ํ”ผํ•˜๊ณ , ์ตœ๋Œ€ํ•œ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ์งœ์•ผ ํ•œ๋‹ค.

๐Ÿ“Œ ํ•ด๋ฒ• ์˜์—ญ์—์„œ ๊ฐ€์ ธ์˜จ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๋ผ

๊ธฐ์ˆ  ๊ฐœ๋…์—๋Š” ๊ธฐ์ˆ  ์ด๋ฆ„์ด ๊ฐ€์žฅ ์ ํ•ฉํ•œ ์„ ํƒ์ด๋‹ค.

๐Ÿ“Œ ๋ฌธ์ œ ์˜์—ญ์—์„œ ๊ฐ€์ ธ์˜จ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๋ผ

  • ์ ์ ˆํ•œ ํ”„๋กœ๊ทธ๋ž˜๋จธ ์šฉ์–ด๊ฐ€ ์—†๋‹ค๋ฉด ๋ฌธ์ œ ์˜์—ญ์—์„œ ์ด๋ฆ„์„ ๊ฐ€์ ธ์˜จ๋‹ค.
  • ํ•ด๋ฒ• ์˜์—ญ๊ณผ ๋ฌธ์ œ ์˜์—ญ์„ ๊ตฌ๋ถ„ํ•  ์ค„ ์•Œ์•„์•ผ ํ•œ๋‹ค.

๐Ÿ“Œ ์˜๋ฏธ ์žˆ๋Š” ๋งฅ๋ฝ์„ ์ถ”๊ฐ€ํ•˜๋ผ

  • ํด๋ž˜์Šค, ํ•จ์ˆ˜, ๋ณ€์ˆ˜ ๋ชจ๋‘ ์ ์ ˆํ•˜๊ฒŒ ๋งฅ๋ฝ์ด ๋งž์•„์•ผ ์˜๋ฏธ๊ฐ€ ๋ถ„๋ช…ํ•ด์ง„๋‹ค.
  • ๋ถˆํ•„์š”ํ•œ ๋งฅ๋ฝ์€ ์—†์• ์•ผ ํ•œ๋‹ค.