비용과 이점 측면에서 거의 모든 것을 분석 할 수 있으며, 이것이 여기에 적용된다고 생각합니다.
첫 번째 옵션의 명백한 이점은 단기적으로 작업을 최소화하고 작업 코드를 다시 작성하여 무언가를 깨뜨릴 가능성을 최소화한다는 것입니다. 명백한 비용은 코드베이스에 불일치가 발생한다는 것입니다. 작업 X를 수행 할 때 코드의 일부에서 한 가지 방법으로 수행되고 코드의 다른 부분에서 다른 방식으로 수행됩니다.
두 번째 접근 방식에서는 일관성이라는 명백한 이점을 이미 언급했습니다. 명백한 비용은 몇 년 전에 포기했을 수도있는 방식으로 일하기 위해 마음을 구부려 야하며 코드를 읽을 수없는 상태로 유지하는 것입니다.
세 번째 접근 방식의 경우 명백한 비용은 단순히 더 많은 작업을 수행해야합니다. 덜 명백한 비용은 당신이 일하고 있던 것들을 깨뜨릴 수 있다는 것입니다. 오래된 코드가 제대로 작동하는지 확인하기 위해 테스트가 부적절한 경우가 종종 있습니다. 명백한 이점은 (성공적으로 가정 할 때) 멋지고 반짝이는 새 코드가 있다는 것입니다. 새로운 언어 구조를 사용할 때 코드베이스를 리팩토링 할 수있는 기회가 있습니다. 코드 기반을 리팩토링 할 수 있습니다. 언어를 작성할 때의 언어를 그대로 사용하더라도 언어 자체를 개선 할 수 있습니다. 일이 쉬워졌고, 큰 승리일지도 모른다.
다른 주요 요점 : 현재이 모듈은 프로젝트 전체를 유지 관리하고 있더라도 오랫동안 유지 보수가 최소한 인 것으로 보입니다. 그것은 꽤 잘 작성되어 있고 비교적 버그가 없다는 것을 나타내는 경향이 있습니다. 그렇지 않으면 중간에 더 많은 유지 관리를 받았을 것입니다.
그것은 또 다른 질문으로 이어집니다 : 지금 당신이 만들고있는 변화의 근원은 무엇입니까? 전반적으로 여전히 요구 사항을 충족하는 작은 버그를 모듈에서 수정하는 경우 전체 모듈을 리팩토링하는 데 시간과 노력이 크게 낭비 될 가능성이 있음을 나타냅니다. 다시 말하지만, "현대적인"기대를 충족시키지 않는 코드를 유지하면서 현재와 거의 같은 위치에있을 수 있습니다.
그러나 요구 사항이 변경되었을 수도 있으며 이러한 새로운 요구 사항을 충족시키기 위해 코드를 작성하고 있습니다. 이 경우 첫 번째 시도가 실제로 현재 요구 사항을 충족하지 못할 가능성이 높습니다. 또한 요구 사항이 다시 안정화되기 전에 몇 차례 수정 될 가능성이 상당히 높습니다. 즉, (상대적으로) 단기적으로이 모듈에서 중요한 작업을 수행 할 가능성이 훨씬 높으며, 알고있는 한 영역 만이 아니라 나머지 모듈 전체에서 변경을 수행 할 가능성이 훨씬 높습니다. 지금. 이 경우 전체 모듈을 리팩토링하면 추가 작업을 정당화 할 수있는 실질적인 단기적 이점이있을 가능성이 훨씬 높습니다.
요구 사항이 변경된 경우 어떤 종류의 변경이 포함되어 있는지, 그리고 그 변경을 유발 한 사항도 살펴 봐야합니다. 예를 들어, SHA-1을 SHA-256으로 대체하기 위해 Git을 수정했다고 가정 해 봅시다. 이는 요구 사항의 변경이지만 범위가 명확하게 정의되어 있고 매우 좁습니다. SHA-256을 올바르게 저장하고 사용하면 나머지 코드베이스에 영향을 미치는 다른 변경이 발생하지 않을 것입니다.
다른 한편으로, 작고 별개로 시작하더라도 사용자 인터페이스 변경은 풍선 화되는 경향이 있으므로 "이 화면에 하나의 새 확인란 추가"로 시작한 항목은 "고정 UI 변경 "사용자 정의 템플릿, 사용자 정의 필드, 사용자 정의 색 구성표 등을 지원합니다."
전자의 경우 변경을 최소화하고 일관성 측면에서 오류를 범하는 것이 가장 합리적입니다. 후자의 경우 완전한 리팩토링이 훨씬 유리합니다.