# Content
전면적인 코드 리부트는 언제나 좋은 선택이 아니다. 비즈니스 로직과 요구사항이 모두 기존 제품에 있다. 따라서 개발자들은 기존 제품을 무시하고 0부터 새로 시작하거나, 기존 코드의 로직을 계승해야 한다.
전자를 선택할 경우 [[@2000]]에 따르면 경쟁자에게 2~3년의 여유를 제공한다. 우리가 이전 제품이 제공하던 서비스를 복구하는 동안 경쟁자는 시장에서 우리를 앞지를 수 있다. 후자를 선택할 경우 우리가 지금 문제를 겪는 바로 그 지점으로 수렴할 확률이 높다. 기존 코드와 비슷한 설계로 회귀하기 훨씬 쉽기 때문이다. 그렇다고 현재 코드베이스를 유지하는 것도 바른 선택지가 아닌데, 점점 개선하고 기능을 추가하기 어려워지는 제품은 결국 경쟁자에게 전자를 선택한 것과 같은 이점을 제공하기 때문이다.
답은 [[@bliki - Strangler Fig]]와 [[보이스카웃 규칙 - 언제 리팩터링 해야하나?]]에 있다. 자신이 방문하는 코드를 항상 이전보다 깨끗한 형태로 관리하는 것이 관건이다. 고려할 점은 다음과 같다.
- 소비자가 사용하는 16%, 결과에 영향을 미치는 20%를 목표 범위로 삼는다.
- 리팩터링의 3계층을 의식하며 개선한다.
- - -
## Reference
- [[@2000]]
- [[@bliki - Strangler Fig]]
- [[보이스카웃 규칙 - 언제 리팩터링 해야하나?]]
- [[리팩터링의 계층]]
- - -