3์ฅ
์ค๋ณต๋ ์ฝ๋
ํ ํด๋์ค์ ์๋ก ๋ค๋ฅธ ๋ ๋ฉ์๋ ์์ ๊ฐ์ ์ฝ๋๊ฐ ์๋ ๊ฒฝ์ฐ : Extract Method
๋์ผํ ์ํผํด๋์ค๋ฅผ ๊ฐ๋ ๋ ์๋ธํด๋์ค์์ ๊ฐ์ ์ฝ๋๊ฐ ์๋ ๊ฒฝ์ฐ : Extract Method ํ Pull Up Method
๋น์ทํ์ง๋ง ๊ฐ์ง๋ ์๋ค๋ฉด : ๋น์ทํ ๋ถ๋ถ Extract Method ํ Form Template Method ์ฌ์ฉ ๊ฐ๋ฅํ์ง ํ์ธ
๊ฐ์ ์์ ์ ํ์ง๋ง ๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ค๋ฉด : ๋ ์๊ณ ๋ฆฌ์ฆ ์ค ๋ ๋ช ํํ ๊ฒ ์ ํํด์ Substitute Algorithm ์ฌ์ฉ
์๋ก ๊ด๊ณ ์๋ ๋ ํด๋์ค์์ ์ค๋ณต๋ ์ฝ๋๊ฐ ์๋ ๊ฒฝ์ฐ : Extract Class ์ฌ์ฉํ ๋ค์ ์์ชฝ์์ ์ด ์๋ก์ด ํด๋์ค๋ฅผ ์ฌ์ฉ
๊ธด ๋ฉ์๋
์ด๋ค ๊ฒ์ ๋ํด ์ฃผ์์ ๋ฌ์์ผ ํ ํ์๋ฅผ ๋๋ ๋๋ง๋ค ๋์ ๋ฉ์๋๋ฅผ ์์ฑํ๋ผ
๋จ์ง ํ ์ค์ ์ฝ๋๋ผ ํ ์ง๋ผ๋ ๊ทธ๊ฒ์ด ์ค๋ช ์ ํ์๋ก ํ๋ค๋ฉด ๋ฉ์๋๋ก ๋ฝ์๋ผ ๊ฐ์น๊ฐ ์๋ค.
๋ฉ์๋ ๊ธธ์ด๋ฅผ ์ค์ด๊ธฐ ์ํด์ Extract Method
๋ฉ์๋์ ํ๋ผ๋ฏธํฐ์ ์์๋ณ์๊ฐ ๋ง๋ค๋ฉด
์กฐ๊ฑด๋ฌธ๊ณผ ๋ฃจํ ๋ํ ๋ฉ์๋ ์ถ์ถ์ด ํ์ํ๋ค๋ ์ ํธ : Decompose Conditional
๊ฑฐ๋ํ ํด๋์ค
์ง๋์น๊ฒ ๋ง์ ์ธ์คํด์ ๋ณ์
Extract Class
์๋ก ๋ง๋ค ํด๋์ค๊ฐ ์๋ธํด๋์ค๋ก์ ์๋ฏธ๊ฐ ์์ผ๋ฉด Extract Subclass
์ฝ๋๊ฐ ๋ง์ ํด๋์ค
ํด๋ผ์ด์ธํธ๊ฐ ํด๋์ค๋ฅผ ์ด๋ป๊ฒ ์ฐ๊ฒ ํ ์ง ๊ฒฐ์ ํ๊ณ ๊ฐ๊ฐ์ ์ฌ์ฉ ๋ฐฉ๋ฒ์ ๋ํด Extract Interface
๊ธด ํ๋ผ๋ฏธํฐ ๋ฆฌ์คํธ
๋๋ถ๋ถ์ ๋ณ๊ฒฝ์ ๊ฐ์ฒด๋ฅผ ๋๊ฒจ์ ํด๊ฒฐ
์ด๋ฏธ ์๊ณ ์๋ ๊ฐ์ฒด์ ์์ฒญํ์ฌ ํ๋ผ๋ฏธํฐ์ ๋ฐ์ดํฐ๋ฅผ ์ป์ ์ ์์ผ๋ฉด
Replace Parameter with Method
ํ ๊ฐ์ฒด๋ก๋ถํฐ ์ฃผ์ ๋ชจ์ ๋ฐ์ดํฐ ๋ญ์น๋ฅผ ๊ทธ ๊ฐ์ฒด ์์ฒด๋ก ๋ฐ๊พธ๊ธฐ ์ํด
Preserve Whole Object
๊ฐ์ฒด์ ๊ด๊ณ ์๋ ์ฌ๋ฌ ๊ฐ์ ๋ฐ์ดํฐ ์์ดํ ์ด ์๋ ๊ฒฝ์ฐ
Introduce Parameter Object
ํ์ฐ์ ๋ณ๊ฒฝ
ํ ํด๋์ค๊ฐ ์ฌ๋ฌ ์ข ๋ฅ์ ๋ณ๊ฒฝ ๋๋ฌธ์ ์๋ฌ๋ฆฌ๋ ๊ฒฝ์ฐ
Extract Class ์ฌ์ฉํด์ ํน์ ์์ธ์ ๋ํด ๋ณํด์ผ ํ๋ ๊ฒ๋ค์ ๋ฌถ์ด์ค
์ฐํ์ด ์์
ํ์ฐ์ ๋ณ๊ฒฝ๊ณผ ๋ฐ๋
ํ๋๋ฅผ ๋ณ๊ฒฝํ์ ๋ ๋ง์ ํด๋์ค๋ฅผ ๊ณ ์ณ์ผ ํ๋ ๊ฒฝ์ฐ
Move Method, Move Field๋ฅผ ์ฌ์ฉํด์ ๋ณ๊ฒฝํด์ผ ํ ๋ถ๋ถ์ ๋ชจ๋ ํ๋์ ํด๋์ค๋ก
๊ธฐ์กด์ ํด๋์ค ์ค์์ ๋ฉ์๋๋ ํ๋๊ฐ ์ฎ๊ฒจ๊ฐ ํ๋ณด๊ฐ ์ ๋นํ ์๋ค๋ฉด ์๋ก ํ๋ ๋ง๋ค์ด๋ผ
๋ฐ์ดํฐ ๋ฉ์ด๋ฆฌ
Extract Class
Switch ๋ฌธ
Switch๋ฌธ์ ์ฝ๋๋ฅผ ์ถ๊ฐํ๋ ค๋ฉด ์ค๋ณต๋ ๋ชจ๋ switch๋ฌธ ์ฐพ์ ๋ฐ๊ฟ์ค์ผ ํจ
Switch ๋ณด๋ฉด ํญ์ ๋คํ์ฑ์ ์๊ฐํด์ผ ํจ
๋ง์ฝ ํ๋์ ๋ฉ์๋์๋ง ์ํฅ์ ๋ฏธ์น๋ ๋ช ๊ฐ์ ๊ฒฝ์ฐ๊ฐ ์๋ค๋ฉด, ๊ตณ์ด ๋ฐ๊ฟ ํ์ ์๋ค.
์ด๋ฐ ๊ฒฝ์ฐ ๋คํ์ฑ์ ๊ณผํ๋ค
Replace parameter with Explicit methods
๋ง์ฝ ์กฐ๊ฑด ์ค null์ด ์๋ ๊ฒฝ์ฐ๋ผ๋ฉด Intruduce Null Object
๋ฉ์์ง ์ฒด์ธ
ํด๋ผ์ด์ธํธ๊ฐ ์ด๋ค ๊ฐ์ฒด๋ฅผ ์ป๊ธฐ ์ํด ๋ค๋ฅธ ๊ฐ์ฒด์ ๋ฌผ์ด๋ณด๊ณ , ๋ ๋ค๋ฅธ ๊ฐ์ฒด์ ๋ฌผ์ด๋ณด๊ณ ...
Hide Delegate
๋ฐ์ดํฐ ํด๋์ค
ํ๋์ ๊ฐ ํ๋์ ๋ํ get/set ๋ฉ์๋๋ง ๊ฐ์ง๊ณ ์๋ ํด๋์ค
์ฝ๊ฐ์ ์ฑ ์์ ๊ฐ์ง ํ์๊ฐ ์๋ค.
get/set ๋ฉ์๋๊ฐ ๋ค๋ฅธ ํด๋์ค์์ ์ฌ์ฉ๋๋์ง ์ฐพ์๋ณด๊ณ ๋์์ ๋ฐ์ดํฐ ํด๋์ค๋ก ์ฎ๊ธฐ๊ธฐ ์ํด
Move Method ์๋
๋ฉ์๋ ์ ์ฒด ์ฎ๊ธธ ์ ์์ ๋ Extract Method
๊ทธ ํ์ get/set ๋ฉ์๋์ ๋ํด Hide Method๋ฅผ ์ฌ์ฉํ ์ ์๋ค
๊ฑฐ๋ถ๋ ์ ์ฐ
์๋ธํด๋์ค๊ฐ ๋ถ๋ชจ ํด๋์ค๋ก๋ถํฐ ์ฃผ์ด์ง ๊ฒ์ ์์น ์์ ๋ ๋จ์ง ํ์ํ ๋ช๊ฐ๋ง ๊ณ ๋ฅธ๋ค
์๋ก์ด ํ์ ํด๋์ค ๋ง๋ค๊ณ Push Down Method, Push Down Field ์ฌ์ฉํด์ ์ฌ์ฉ๋์ง ์๋ ๋ฉ์๋๋ฅผ ๋ชจ๋ ํ์ ๋ฉ์๋๋ก ์ฎ๊ฒจ๋ผ
Last updated