๋ฆฌํฉํฐ๋ง ์ ์
๋ช
์ฌ : ์ํํธ์จ์ด์ ๊ฒ๋ณด๊ธฐ ๋์์ ๊ทธ๋๋ก ์ ์งํ ์ฑ, ์ฝ๋๋ฅผ ์ดํดํ๊ณ ์์ ํ๊ธฐ ์ฝ๋๋ก ๋ด๋ถ ๊ตฌ์กฐ๋ฅผ ๋ณ๊ฒฝํ๋ ๊ธฐ๋ฒ
๋์ฌ : ์ํํธ์จ์ด์ ๊ฒ๋ณด๊ธฐ ๋์์ ๊ทธ๋๋ก ์ ์งํ ์ฑ, ์ฌ๋ฌ ๊ฐ์ง ๋ฆฌํฉํฐ๋ง ๊ธฐ๋ฒ์ ์ ์ฉํด์ ์ํํธ์จ์ด๋ฅผ ์ฌ๊ตฌ์ฑํ๋ค.
1. ๋ฆฌํฉํฐ๋ง ํ๋ ๋์์๋ ์ฝ๋๊ฐ ํญ์ ์ ์ ์๋ํด์ผํ๋ค -> ์ ์ฒด ์์
์ด ๋๋์ง ์์๋๋ผ๋ ์ธ์ ๋ ๋ฉ์ถ ์ ์๋ค
์ด ๋ถ๋ถ์ ์ ์ํํ๊ธฐ ์ํด์ ๋ฆฌํฉํฐ๋ง ๋จ๊ณ๋ฅผ ์๊ฒ ์ชผ๊ฐ๊ณ ํญ์ ์ ์ ์๋ํ๋ค๋ ๊ฒ์ ๋งค๋ฒ ํ
์คํธ๋ฅผ ์ํํ๋ฉฐ ๋ณด์ฅํด์ผ ํ๋ค๋ ๋ง๊ณผ ๊ฐ๋ค๊ณ ์๊ฐํ๋ค. Ch1์์๋ ๊ฐ์กฐํ ๋ถ๋ถ์ด์ง๋ง ๊ทธ๋์ ์์ง์ฌ์ง ํ
์คํธ๊ฐ ๋๋จํ ์ค์ํ๋ค.
2. ๊ธฐ๋ฅ ์ถ๊ฐ, ๋ฆฌํฉํฐ๋ง๋ฅผ ๋ช
ํํ ๊ตฌ๋ถํ์ฌ ์์ฃผ ๋ฒ๊ฐ์ ์์
ํ๋๋ผ๋ ๋ ๊ฐ์ ๋ชจ์ ์ค ํ๋์ ๋ชจ์๋ฅผ ์จ์ผ ํ๋ค. ํญ์ ๋ด๊ฐ ์ฐ๊ณ ์๋ ๋ชจ์๊ฐ ๋ฌด์์ธ์ง, ๊ทธ์ ๋ฐ๋ฅธ ๋ฏธ๋ฌํ ์์
์ ์ฐจ์ด๋ฅผ ๋ถ๋ช
ํ๊ฒ ์ดํดํด์ผ ํ๋ค.
3. ์ค๋ณต ์ฝ๋ ์ ๊ฑฐ๋ ๋ชจ๋ ์ฝ๋๊ฐ ์ธ์ ๋ ๊ณ ์ ํ ์ผ์ ์ํํจ์ ๋ณด์ฅํ๋ค.
4. 3์ ๋ฒ์น - ๋น์ทํ ์ผ์ ์ธ ๋ฒ์งธ ํ๊ฒ ๋๋ฉด ๋ฆฌํฉํฐ๋งํ๋ค.
5. ๋ฆฌํฉํฐ๋งํ๊ธฐ ์ข์ ๋(๊ธฐํ๊ฐ ๋ ๋๋ง ์งํ)
- ๊ธฐ๋ฅ์ ์๋ก ์ถ๊ฐํ๊ธฐ ์ง์ : ๊ตฌ์กฐ๋ฅผ ์ด์ง ๋ฐ๊พธ๋ฉด ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ธฐ ์ฌ์์ง ๋งํ ๋ถ๋ถ ์ฐพ๊ธฐ
- ์ดํด๋ฅผ ์ํ ๋ฆฌํฉํฐ๋ง : ์ฝ๋์ ์๋๊ฐ ๋ช
ํํ๊ฒ ๋๋ฌ๋๋๋ก ๋ฆฌํฉํ ๋ง (์ด๋ค ์ญํ ์ ํ๋์ง ์ดํด๋ ๋ณ์๋ ์ ์ ํ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ์ฃผ๊ณ , ๊ธด ํจ์๋ฅผ ์๊ฒ ๋๋๋ ๋ฑ)
- ์ฐ๋ ๊ธฐ ์ค๊ธฐ ๋ฆฌํฉํฐ๋ง : ๊ฐ๋จํ ์์ ํ ์ ์๋ ๊ฒ์ ์ฆ์ ๊ณ ์น๊ณ , ์๊ฐ์ด ์ข ๊ฑธ๋ฆฌ๋ ์ผ์ ํ๋ ์ผ์ ๋๋ด๊ณ ์ฒ๋ฆฌ
๊ณํ๋ ๋ฆฌํฉํฐ๋ง์ ํ๊ฒ ๋๋ ์ผ์ ์ต์ํ์ผ๋ก ์ค์ด๊ณ , ๋ฆฌํฉํฐ๋ง ์์
๋๋ถ๋ถ์ ๋๋ฌ๋์ง ์๊ฒ, ๊ธฐํ ๋ ๋๋ง๋ค ์งํ
6. ๋ฆฌํฉํฐ๋ง ์ ๊ณ ๋ คํ ๋ฌธ์
- ์ ๊ธฐ๋ฅ ๊ฐ๋ฐ ์๋ ์ ํ : ๋ฆฌํฉํฐ๋ง์ ํ๋ฉด ๊ฐ๋ฐ ์๋๊ฐ ๋๋ ค์ง๋ค๊ณ ํ์ง๋ง, ๊ฒฐ๊ตญ ๋ฆฌํฉํฐ๋ง์ ๋ชฉ์ ์ ๊ฐ๋ฐ ์๋๋ฅผ ๋์ด๋ ๋ฐ ์๋ค.
ํ์ง๋ง ์ ์๋ ์ง์ ๊ฑด๋๋ฆด ์ผ์ด ๊ฑฐ์ ์๊ฑฐ๋, ๋ถํธํ ์ ๋๊ฐ ๊ทธ๋ฆฌ ์ฌํ์ง ์๋ค๊ณ ํ๋จ๋๋ฉด ๋ฆฌํฉํฐ๋ง ํ์ง ์๋ ํธ์ด๋ค.
- ํ
์คํ
: ๋ฆฌํฉํฐ๋งํ๊ธฐ ์ํด์๋ ์๊ฐ ํ
์คํธ ์ฝ๋๋ฅผ ๋ง๋ จํด์ผ ํ๋ค.
- ๋ ๊ฑฐ์ ์ฝ๋ : ๋ ๊ฑฐ์ ์ฝ๋๋ ๋์ฒด๋ก ๋ณต์กํ๊ณ ํ
์คํธ๋ ์ ๋๋ก ๊ฐ์ถฐ์ง์ง ์์ ๊ฒ์ด ๋ง๋ค. -> ํ
์คํธ ๋ณด๊ฐ์ด ์ค์ (๋ ๊ฑฐ์ ์ฝ๋ ํ์ฉ ์ ๋ต)
7. ์ฑ๋ฅ์ ๋ํ ํฅ๋ฏธ๋ก์ด ์ฌ์ค
๋๋ถ๋ถ ํ๋ก๊ทธ๋จ์ ์ ์ฒด ์ฝ๋ ์ค ๊ทนํ ์ผ๋ถ์์ ๋๋ถ๋ถ์ ์๊ฐ์ ์๋นํ๋ค.
์ฑ๋ฅ ์ต์ ํ ๋จ๊ณ
- ํ๋กํ์ผ๋ฌ๋ก ํ๋ก๊ทธ๋จ์ ๋ถ์ํ์ฌ ์๊ฐ๊ณผ ๊ณต๊ฐ์ ๋ง์ด ์ก์๋จน๋ ์ง์ ์ ์์๋ธ๋ค -> ์ฑ๋ฅ์ ํฐ ์ํฅ์ ์ฃผ๋ ์์ ๋ถ๋ถ๋ค์ ์ฐพ์ ์ ์๋ค
- ๊ทธ ๋ถ๋ถ์ ๊ฐ์
- ์์ ๋จ๊ณ๋ก ๋๋ ์ ์งํํ๊ณ ํ
์คํธ๋ฅผ ๋งค๋ฒ ์ํํ๋ ์ฑ๋ฅ์ด ๊ฐ์ ๋์ง ์์๋ค๋ฉด ์์ ๋ด์ฉ ๋๋๋ฆฐ๋ค
8. ๋ฆฌํฉํฐ๋ง์ ์๋ํํ๋ ๊ฐ์ฅ ์ด์คํ ๋ฐฉ๋ฒ
- ์์ค ์ฝ๋์ ํ
์คํธ๋ฅผ ์ง์ ์กฐ์ํ๋ ๊ฒ(โ์ฐพ์ ๋ฐ๊พธ๊ธฐโ ๊ธฐ๋ฅ์ผ๋ก ์ด๋ฆ ๋ณ๊ฒฝํ๊ฑฐ๋, ๋ณ์ ์ถ์ถํ๊ธฐ๋ฅผ ์ํด ๊ฐ๋จํ ์ฝ๋๋ฅผ ์ฌ๊ตฌ์ฑํ๋ ์ ๋ฑ)
9. ์ฑ
์๊ฐ
- ๋ฆฌํฉํฐ๋ง ์ฐ์ต์ ์ฃผ๋ ฅํ ์ฑ
: ๋ฆฌํฉํฐ๋ง ์ํฌ๋ถ(์๋ฆฌ์ ์จ์ดํฌ)
- ๋ ๊ฑฐ์ ์ฝ๋ ํ์ฉ ์ ๋ต(๋ง์ดํด ํ๋์ค)
- ๋ฆฌํฉํฐ๋ง ์๋ฐ์คํฌ๋ฆฝํธ(๊ธธ๋ฒ)
- ๋ฆฌํฉํฐ๋ง 2ํ ์ต์ ์๋ฃ : https://github.com/WegraLee/Refactoring
GitHub - WegraLee/Refactoring: ใ๋ฆฌํฉํฐ๋ง, 2ํใ(ํ๋น๋ฏธ๋์ด, 2020)
ใ๋ฆฌํฉํฐ๋ง, 2ํใ(ํ๋น๋ฏธ๋์ด, 2020). Contribute to WegraLee/Refactoring development by creating an account on GitHub.
github.com
Refactoring Home Page
Introduction to the technique of refactoring and online catalog of refactorings
refactoring.com
'๊ฐ๋ฐ๋์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฆฌํฉํฐ๋ง 2ํ] ๋ฆฌํฉํฐ๋ง ์นดํ๋ก๊ทธ ๋ณด๋ ๋ฒ(ch5) (0) | 2025.05.01 |
---|---|
[๋ฆฌํฉํฐ๋ง 2ํ] action point(ch4) (0) | 2025.04.30 |
[ํจ๊ป์๋ผ๊ธฐ] action point (2) | 2025.04.30 |
[๋ฆฌํฉํ ๋ง 2ํ] action point(ch3) (0) | 2025.04.28 |
[๋ฆฌํฉํฐ๋ง 2ํ] action point(ch1) (0) | 2025.04.26 |