← 질문 목록
#212깊이 0
리팩토링과 기능 추가를 나눠서 하는 이유는 무엇인가?
코드의 수정 범위와 영향도를 명확히 구분하여 버그 발생 가능성을 낮추기 때문이다.
| 기준 | 리팩토링 | 기능 추가 |
|---|---|---|
| 목적 | 내부 구조 개선 | 새로운 동작 구현 |
| 외부 동작 | 동일함 | 변경됨 |
| 테스트 | 기존 테스트 통과 | 새로운 테스트 추가 |
리팩토링 단계에서는 기존 테스트 코드가 계속 통과해야 한다. 구조만 바꾸고 동작은 유지해야 하므로, 기능 변경이 섞이면 어디서 버그가 발생했는지 찾기 힘들다.
기능 추가 단계에서는 리팩토링으로 정돈된 구조 위에 새 기능을 얹는다. 깨끗한 토대가으로 인해 구현 속도가 빨라지고 예상치 못한 사이드 이펙트를 줄일 수 있다.
두 작업을 분리하여 커밋 단위로 관리하면 코드 리뷰어의 인지 부하를 줄인다. 변경 사항이 '구조 개선'인지 '동작 변경'인지 명확히 알 수 있어 검증 효율이 높아진다.