물론.
리팩토링은 작업중인 "통과"프로젝트에서 수행해야합니다. 모든 테스트 (단위, 시스템 및 합격 수준)가 통과하면 제품이 요구 사항을 충족한다는 것을 알 수 있습니다. 리팩토링하면 모든 테스트가 계속 통과하는지 계속 확인할 수 있습니다. 테스트가 실패하기 시작하면 문제가있는 것이므로 수정해야합니다. 테스트에 실패한 경우 리팩토링하기 전에 리팩토링이 시스템 기능을 변경하지 않도록 항상 리팩토링하기 전에 수정해야합니다.
또한 리팩토링을 수행하고 시간과 예산을 계속 제공 할 시간과 리소스가 있다고 가정하면 리팩토링을하기에 완벽한 시간입니다. 이제 리팩토링을 통해 시스템을보다 쉽게 이해하고 유지 관리 할 수 있으므로 더 많은 새로운 기능을 추가할수록 더욱 쉬워집니다. 코드 썩음 및 소프트웨어 엔트로피 와 싸워야 합니다 .
Joel Etherton 이 의견에서 지적한 것처럼 리팩토링 범위를 관리해야합니다. 곧 기능을 추가 할 시스템 부분의 리팩토링에 초점을 맞추고 리팩토링을 수행하여 새로운 기능을보다 쉽게 작업하거나 추가 할 수 있습니다. 정적 분석, 메트릭 도구 및 코드 검토를 사용하면 가장 중요한 영역을 식별 할 수 있습니다. 리팩토링을했기 때문에 마감일을 놓치지 않으려면 계속해서 고객에게 가치를 더해야합니다.
리팩토링에 가치가없는 고객을 언급했습니다. 일반적으로 고객은 코드의 품질이 아니라 제품의 품질에 관심이 있습니다. 리팩토링을 사용하면 높은 품질의 제품을 유지하고 변화하는 고객 요구에 맞는 제품을 계속 제공 할 수 있습니다. 일정에 따라 리팩토링 할 시간을 협상하십시오 (고객은 Y 일 동안 X 기능을 원하고 Y + Z 일 또는 XN 기능을 얻을 수 없는지 확인하여 디자인, 리팩토링 및 구현에 시간을 소비 할 수 있는지 확인) 할 수있다.