과대 평가에 대한 모든 의견으로 나는 약간의 포인트 (웰 기회)가 누락되었다고 생각합니다.
코드를 수정하는 데 걸리는 시간을 추정하고 (그냥) 일부를 추가하는 것은 코드를 수정하는 데 필요한 시간 (리 팩터!)을 변경하여 안전하게 변경 될 수있는 지점으로 가져 와서 변화 (아마도 함께 녹아 내림). 좋아, 이것은 똑같은 일이지만 ... 퍼지 또는 스트레칭 또는 과대 평가에 대한 의문의 여지가 없습니다. 단순히 말하면 문제를 해결하기 위해 먼저해야한다고 말하면됩니다. 전체적으로. 여기서 핵심은 변경 사항이 의존하는 시스템 부분에서 더 이상 작업하지 않는다는 것입니다. 다른 곳에 끔찍한 코드가있는 경우 ... 어려우면 거기에 넣으십시오.
원래의 질문으로 돌아 조금 올 - 많은 세월 후에하지 않는 한 당신이 뭔가를 구현할 때 그것의 나를 위해이 내려와 알 (? (용의자를 기대하지, 믿을 수), 생각하지만 알고 추가적인 물건입니다) 또한 요구 사항을 구현하는 데 필요한 작업을 수행해야하며 더 이상 깔끔하고 우아한 방식으로 할 수 있어야합니다.
다음에 구현하려고 할 때 (때로는 나중에) 코드베이스 (및 데이터베이스 등)를 가능한 한 단정하고 우아하게 해당 기능을 구현하는 데 필요한 상태로 만드는 데 필요한 단계를 수행합니다. 이 리팩토링은 프로젝트가 발전함에 따라 자연스럽게 발생하는 혼란을 처리하는 곳입니다. 더 많은 혼란을 피하십시오 (또는 최소한 레벨을 일관되게 유지하십시오).
여기에있는 토론 영역 중 하나는 "기술 부채"입니다.-초과 인출과 같이 상환해야하며, 더 오래 버릴수록 더 많은 관심을 가져야합니다 (이 경우 수정하는 데 필요한 시간). 기술 부채를 최소화하기 위해 시간을 투자해야한다는 주장.
이것은 또한 단위 테스트와 다른 자동 테스트가 시작되기 시작하는 곳입니다 (내가 더 행복하다고 말할 수있을뿐만 아니라 내가 할 수 있다면!) 적절한 빌드 서버 (적어도 일부는 실행할 수 있음) 테스트 중). 이것들과 결합하지만 가치 자체는 의존성 주입 및 제어 역전과 같은 패턴입니다 (두 가지가 "동일"하다는 것을 확신하지 마십시오). 배관을 쉽게 변경하고 따라서 변화를 처리하기 때문에 격리.
마지막으로, 그것이 깨지지 않았다면 고치지 마십시오. 깔끔하게 정리하기 위해 코드를 정리하는 것은 만족스럽지 만 오류를 유발할 수있는 기회이므로 코드를 변경하지 않아도되고 코드를 작성하지 않으면 고통 스러울 수 있습니다. 혼자-수정하거나 교체 할 수있는 기회는 결국 롤오버됩니다!