E D R , A S I H C RSS

How To Study Refactoring

Refactoring์„ ํ˜น์€ ๋™๋ช…์˜ ์ฑ…์„ ๊ณต๋ถ€ํ•˜๋Š” ๋ฒ•


OOP๋ฅผ ํ•˜๋“  ์•ˆํ•˜๋“  ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ž€ ์—…์„ ํ•˜๋Š” ์‚ฌ๋žŒ์ด๋ผ๋ฉด ์ด ์ฑ…์€ ์ž์‹ ์˜ ๊ณต๋ ฅ์„ ์„œ๋„ˆ ๋‹จ๊ณ„ ๋ ˆ๋ฒจ์—…์‹œ์ผœ ์ค„ ์ˆ˜ ์žˆ๋‹ค. ์ž์งˆ๊ตฌ๋ ˆํ•œ ๊ธฐ์ˆ ์„ ์ตํžˆ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ณ  ๊ธฐ๊ฐ๊ณผ ๋‚ด๊ณต์„ ์ฆ๊ฐ•ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ํ˜น์ž๋Š” DesignPatterns ์ด์ „์— Refactoring์„ ๋ด์•ผ ํ•œ๋‹ค๊ณ ๋„ ํ•œ๋‹ค. ์ด ๋ง์ด ์–ด๋А ์ •๋„ ์ผ๋ฆฌ๊ฐ€ ์žˆ๋Š” ๊ฒƒ์ด, ํšจ๊ณผ์ ์ธ ํ•™์Šต์€ ๋ฌธ์ œ ์˜์‹์ด ์„ ํ–‰๋˜์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. DesignPatterns๋Š” ๊ฑฐ์‹œ์  ์ฐจ์›์—์„œ ํ•ด๊ฒฐ์•ˆ๋“ค์„ ๋ชจ์•„๋†“์€ ๊ฒƒ์ด๋‹ค. Refactoring์„ ๋ณด๊ณ  ๋‚˜์œ ๋ƒ„์ƒˆ(Bad Smell)๋ฅผ ๋งก์„ ์ˆ˜ ์žˆ๋Š” ํ›„๊ฐ์„ ๋ฐœ๋‹ฌ์‹œ์ผœ์•ผ ํ•œ๋‹ค. Refactoring์˜ ๋ชฉ๋ก์„ ๋ชจ๋‘ ์™ธ์šฐ๋Š” ๊ฒƒ์€ ํฐ ์˜๋ฏธ๊ฐ€ ์—†๋‹ค. ๊ทธ๊ฒƒ๋ณด๋‹ค ๋ƒ„์ƒˆ๋‚˜๋Š” ์ฝ”๋“œ๋ฅผ ๋А๋‚„ ์ˆ˜ ์žˆ๋Š” ๊ฐ์ˆ˜์„ฑ์„ ํ‚ค์šฐ๋Š” ๊ฒƒ์ด ๋” ์ค‘์š”ํ•˜๋‹ค. ๋ณธ์ธ์€ ์ผ์ฃผ์ผ์— ํ•œ ๊ฐ€์ง€์”ฉ ๋‚˜์œ ๋ƒ„์ƒˆ๋ฅผ ์ •ํ•ด๋†“๊ณ  ๊ทธ ๊ธฐ๊ฐ„ ๋™์•ˆ์—๋Š” ์ž์‹ ์ด ์ ‘ํ•˜๋Š” ๋ชจ๋“  ์ฝ”๋“œ์—์„œ ๊ทธ ๋ƒ„์ƒˆ๋งŒ์ด๋ผ๋„ ํ™•์‹คํžˆ ๋งก๋„๋ก ์ง‘์ค‘ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ถŒํ•œ๋‹ค. ์ผ๋ช… ์ผ์ทจ์ง‘์ค‘ํ›„๊ฐ๋ฒ•. ํŒจํ„ด ๊ฐœ๋…์„ ๋งŒ๋“  ๊ฑด์ถ•๊ฐ€ ํฌ๋ฆฌ์Šคํ† ํผ ์•Œ๋ ‰์‚ฐ๋”๋‚˜ GoF์˜ ๋ž„ํ”„ ์กด์Šจ์€ ์ข‹์€ ๋””์ž์ธ์ด๋ž€ ๋‚˜์œ ๊ฒƒ์ด ์—†๋Š” ์ƒํƒœ๋ผ๊ณ  ํ•œ๋‹ค. ๋ฌด์ƒ‰ ๋ฌด๋ฏธ ๋ฌด์ทจ์˜ ็„ก็ˆฒ์  ่‡ช็„ถ ์ฝ”๋“œ๊ฐ€ ๋˜๋Š” ๊ทธ๋‚ ์„ ์œ„ํ•ด ์˜ค๋Š˜๋„ ์šฐ๋ฆฌ๋Š” ๋ฆฌํŒฉํ† ๋ง์ด๋ผ๋Š” ๆœ‰็ˆฒ๋ฅผ ์ตํžŒ๋‹ค. -- ๊น€์ฐฝ์ค€, ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ์›จ์–ด 2001๋…„ 11์›”ํ˜ธ

๊ธฐํ•™์œผ๋กœ ์šฐ๋ฆฌ ์‚ฌ์ƒ์‚ฌ์— ํฐ ํš์„ ๊ทธ์€ ์ฒ ํ•™์ž์š”, "์„œ์šธ์„œ ์ฑ…๋งŒ ์‚ฌ๋‹ค ๋งํ•œ ์‚ฌ๋žŒ"์œผ๋กœ ์ด๋ฆ„์„ ๋‚ ๋ฆด ์ •๋„๋กœ ์—„์ฒญ๋‚œ ์ง€์‹์š•์„ ๊ณผ์‹œํ•˜๋˜ ์‚ฌ์ƒ๊ฐ€ ํ˜œ๊ฐ• ์ตœํ•œ๊ธฐ๋Š” ๊ทธ์˜ ์ €์ˆ  <็ฅžๆฐฃ้€š>์—์„œ ๋ˆˆ์— ํ†ตํ•˜๋Š” ๋ฒ•(็›ฎ้€š), ๊ท€์— ํ†ตํ•˜๋Š” ๋ฒ•(่€ณ้€š), ์ฝ”์— ํ†ตํ•˜๋Š” ๋ฒ•(้ผป้€š) ๋“ฑ์„ ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ๋‹ค. ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ์šฐ๋ฆฌ๋Š” ์ฝ”์— ๋„ํ†ตํ•  ์ˆ˜ ์žˆ์„๊นŒ? ๋ฆฌํŒฉํ† ๋ง์„ ๊ณต๋ถ€ํ•˜๊ฑฐ๋‚˜ ํ˜น์€ ํ–ˆ๋˜ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋งŽ์€ ์˜๊ฐ๊ณผ ๋ฉ”ํƒ€ํฌ๋ฅผ ์ฃผ๋Š” ์ฑ…์ด๋‹ค. ์ผ๋…์„ ๊ถŒํ•œ๋‹ค. --๊น€์ฐฝ์ค€

์ˆ˜๋ จ๋ฒ•
  • ์ผ์ทจ์ง‘์ค‘ํ›„๊ฐ๋ฒ•
  • Minimize Comments : ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์„ ๋–จ์–ด๋œจ๋ฆฌ์ง€ ์•Š๊ฑฐ๋‚˜ ํ˜น์€ ์˜คํžˆ๋ ค ์˜ฌ๋ฆฌ๋ฉด์„œ ์ฃผ์„์„ ์ตœ์†Œํ™”ํ•˜๋„๋ก ๋…ธ๋ ฅํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด, ์ž๋™์œผ๋กœ ๋ฆฌํŒฉํ† ๋ง์ด ์ด๋ค„์ง€๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.
  • Follow OAOO : OAOO ๋ฒ•์น™์„ ๊ฐ€๋Šฅํ•˜๋ฉด ์ตœ๋Œ€ํ•œ ๋”ฐ๋ฅด๋ ค๊ณ  ํ•œ๋‹ค. ๋ฆฌํŒฉํ† ๋ง ์ž๋ฐœ๊ณต์ด ํ„ฐ์ง„๋‹ค.
  • Follow LawOfDemeter : ๋””๋ฏธํ„ฐ ๋ฒ•์น™์„ ๊ฐ€๋Šฅํ•˜๋ฉด ์ง€ํ‚ค๋ ค๊ณ  ํ•œ๋‹ค. ์–ด๋–ค ๋ฆฌํŒฉํ† ๋ง์ด ์ €์ ˆ๋กœ ์ด๋ค„์ง€๊ฑฐ๋‚˜ ํ•„์š” ์—†์–ด์ง€๋Š”๊ฐ€?
  • Pair Refactoring : ํ•จ๊ป˜ ๋ฆฌํŒฉํ† ๋งํ•œ๋‹ค. ํ˜ผ์ž ํ•˜๋Š” ๊ฒƒ ๋ณด๋‹ค ํ›จ์”ฌ ๋นจ๋ฆฌ ํ›จ์”ฌ ๋” ๋งŽ์€ ๊ฒƒ์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋‹ค. ํŠนํžˆ, ๊ฐ์ž ์ž‘์„ฑํ–ˆ๋˜ ์ฝ”๋“œ๋ฅผ ํ•จ๊ป˜ ๋ฆฌํŒฉํ† ๋งํ•˜๊ณ , ์ œ์‚ผ์ž์˜ ์ฝ”๋“œ๋ฅผ ๋˜ ํ•จ๊ป˜ ๋ฆฌํŒฉํ† ๋งํ•ด ๋ณด๋ผ. ์‚ฌ๋žŒ์ด ๋งŽ๋‹ค๋ฉด ๋‹ค๋ฅธ ํŽ˜์–ด๊ฐ€ ๋ฆฌํŒฉํ† ๋งํ•œ ๊ฒƒ๊ณผ ์„œ๋กœ ๋น„๊ตํ•˜๊ณ  ํ† ๋ก ํ•ด๋ณด๋ผ.
  • Separate The What From The How : "์–ด๋–ป๊ฒŒ"์™€ "๋ฌด์—‡์„"์„ ๋ถ„๋ฆฌํ•˜๋„๋ก ํ•˜๋ผ. ์–ด๋–ค ๋ฆฌํŒฉํ† ๋ง์ด ์ฐฝ๋ฐœํ•˜๋Š”๊ฐ€?


Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:26
Processing time 0.0164 sec