오래되거나 작성자가 떠나 유지보수가 어려운 코드. 단순히 오래된 코드가 아니라 테스트 없는 코드를 포함한다.
Michal Feathers 정의 : 테스트가 없는 코드가 레거시 코드다.
위험한 이유
테스트 없는 코드 -> 수정하면 어디서 터질지 모름 -> 수정이 두려워짐 -> 수정 안 하고 그 위에 덧댐 -> 코드의 복잡화 -> 더 수정하기 두려워짐. -> 악순화 반복
대응하기법
1. 이해 : 코드 읽기, 문서화 -> 수정 전 동작 파악
2. 보호 : 테스트 먼저 작성 -> 수정 후 동작 보장
3. 리팩토링 : 내부 구조 개선 -> 안전망 있으니 가능
4. 검증 : 테스트 재실행 -> 사이드 이펙트 확인
레거시 코드 리팩토링 기법
1. Strangler Fig : 레거시를 조금씩 새 코드로 교체하는 작업으로 대규모 시스템 교체 시 자주 사용하는 기법이다.
2. Seam 찾기 : 최소한의 수정으로 테스트 가능하게 만드는 지점으로 테스트 추가 전에 자주 사용하는 기법이다.
3. Extract Method : 긴 함수에서 의미 단위로 메서드 분리로 가독성 개선 시에 자주 사용하는 기법이다.
4. Wrap and Modify : 레거시를 감싸는 래퍼를 만들어 그 위에서 수정하는 작업으로 직접 수정이 위험할 때 자주 사용하는 기법이다.
연결되는 단어들
보이스카우트 규칙 : 코드를 건드릴 때마다 왔을 때보다 조금 더 깨끗하게 남기는 원칙. 레거시 누적을 막는 습관.
Strangler Fig 패턴 : 레거시를 한 번에 교체하지 않고 새 코드가 조금씩 감싸며 대체하는 리팩토링 전략.
Seam : Michael Feathers가 정의한 개념. 코드 수정 없이 테스트를 끼워 넣을 수 있는 지점. 레거시 코드에 테스트를 추가할 때 찾아야 하는 것.
회귀 테스트 (Regression Test) : 수정 후 기존 동작이 깨지지 않았는지 확인하는 테스트. 레거시 리팩토링의 핵심 안전망.
'Word' 카테고리의 다른 글
| 사용자 여정 ( User Journey ) (0) | 2026.07.01 |
|---|---|
| 드로우 콜 ( Draw Call ) (0) | 2026.06.29 |
| 경제 시스템 ( Game Economy ) (0) | 2026.06.29 |
| LOD ( Level of Detail ) (1) | 2026.06.26 |
| 밸런스 패치 ( Balance Patch ), 스코프 ( Scope ), 확장성 ( Scalability ) (0) | 2026.06.26 |
