JiwonDev

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์•ˆํ‹ฐํŒจํ„ด (Anti-pattern)

by JiwonDev

* ์ด ๊ธ€์€ ์ž‘์„ฑ์ž๊ฐ€ ์•ˆํ‹ฐํŒจํ„ด์„ ์ ‘ํ•  ๋•Œ ๋งˆ๋‹ค ์ถ”๊ฐ€๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

 

ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋ฉด์„œ ์ƒํ™ฉ์— ๋”ฐ๋ผ ์ž์ฃผ ์“ฐ์ด๋Š” ์„ค๊ณ„๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•œ '๋””์ž์ธ ํŒจํ„ด' ์ด๋ผ๋Š” ๊ฒŒ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋ฐ˜๋Œ€๋กœ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจํ„ด์ด์ง€๋งŒ, ์ž˜ ๋ชจ๋ฅด๊ณ  ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์ •๋ง ์ปค๋‹ค๋ž€ ์žฅ์• ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ํŒจํ„ด๋„ ์žˆ๋Š”๋ฐ ์ด๋ฅผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์•ˆํ‹ฐํŒจํ„ด์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

 

์•ˆํ‹ฐํŒจํ„ด์€ ์ •๋ง ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ข…๋ฅ˜๊ฐ€ ์žˆ์ง€๋งŒ, Java์—์„œ ๋Œ€ํ‘œ์ ์œผ๋กœ ๋งŽ์ด ์–ธ๊ธ‰๋˜๋Š” ๋ช‡๊ฐ€์ง€๋ฅผ ์†Œ๊ฐœํ•˜๊ณ ์ž ํ•œ๋‹ค.

 

# ํ•œ์ค„์งœ๋ฆฌ ์•ˆํ‹ฐํŒจํ„ด

  • if/ for/ while ๋ฌธ์˜ ํ•œ์ค„ ์งœ๋ฆฌ ๋ธ”๋Ÿญ์„ ์ƒ๋žตํ•˜๋Š” ๊ฒƒ์€ ์ข‹์ง€ ์•Š์€ ๋ฐฉ๋ฒ•์ด๋‹ค.
    (Java๋Š” ํŒŒ์ด์ฌ์ด ์•„๋‹ˆ๋‹ค. ์ด๋Š” ์ฝ”๋“œ ๊ตฌ์กฐ๋ฅผ ์• ๋งคํ•˜๊ฒŒ ๋งŒ๋“ค์–ด ๊ฐ€๋…์„ฑ๊ณผ ๋””๋ฒ„๊น…์„ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ ๋‹ค.)
  • ๋ฐฐ์—ด ์ˆœํšŒ์‹œ array.length ๊ฐ™์€ ์ •๋ณด๋Š” ๋งค๋ฒˆ ํ˜ธ์ถœํ•˜์ง€๋ง๊ณ  ์บ์‹œํ•˜๊ณ  ์‚ฌ์šฉํ•˜์ž.
  • if-else๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ„๋‹จํ•œ ๋กœ์ง์„ ์˜ˆ์™ธ๋กœ ์ฒ˜๋ฆฌํ•˜์ง€ ๋ง์ž. ์˜ˆ์™ธ๋Š” ์ž์ฃผ ๋ฐœ์ƒํ•˜๋ฉด ์•ˆ๋œ๋‹ค.
  • ์‹ฑ๊ธ€ํ†ค์„ ์ œ๊ณตํ•˜๋Š” ๊ฐ์ฒด๋Š” ๋ฌด์ƒํƒœ(Stateless)๋ฅผ ์ง€ํ–ฅํ•ด์•ผ ํ•œ๋‹ค. ์ƒํƒœ๋ฅผ ๊ฐ€์ง€๋ฉด ์‹ฌ๊ฐํ•œ ์žฅ์• ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
  • ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์ƒ์„ฑ์ž์™€ ์ดˆ๊ธฐํ™” ์ž‘์—…์€ ๋”ฐ๋กœ ๋ถ„๋ฆฌํ•ด์„œ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์œ ์ง€๋ณด์ˆ˜์— ์ข‹๋‹ค. (์—„์ฒญ ๊ฐ„๋‹จํ•œ ๊ฒฝ์šฐ๋Š” ์˜ˆ์™ธ)

# ํ™”๋ฌผ์ˆญ๋ฐฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(Cargo cult)

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจํ„ด์—๋Š” ์ •๋ง ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. ํŒฉํ† ๋ฆฌ, ์ „๋žต, ์‹ฑ๊ธ€ํ†ค...

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

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

 


# ๊ธˆ๋„๊ธˆ (Gold plating)

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

 


# ๋งค์ง ๋„˜๋ฒ„ (Magic Number)

๋งˆ๋ฒ•์˜ ์ˆซ์ž. ์ง์ ‘ ์ˆซ์ž๊ฐ€ ์ž…๋ ฅ๋œ ํ•˜๋“œ์ฝ”๋”ฉ ๋œ ๊ฐ’์ด๋‹ค.

  • ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋งŒ ์„ค๋ช…๋˜์ง€ ์•Š์€ ์ƒ์ˆ˜๋กœ ์žˆ๋Š” ๊ฐ’ (Enum์ด๋‚˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์˜๋ฏธ๋ฅผ ์ „๋‹ฌ ๋ฐ›์•„์•ผ ํ•œ๋‹ค.)
  • ๋‹ค๋ฅธ ์˜๋ฏธ๋กœ ์ฐฉ๊ฐํ•˜๋ฉด ์•ˆ๋˜๋Š” ๊ฐ’์ด, ์ถฉ๋ถ„ํžˆ ์ฐฉ๊ฐํ•˜๊ธฐ ์ข‹์€ ์ƒํƒœ๋กœ ์žˆ์„ ๋•Œ

 

๋ธ”๋กœ๊ทธ์˜ ์ •๋ณด

JiwonDev

JiwonDev

ํ™œ๋™ํ•˜๊ธฐ