2008-09-19 3 views

답변

13

아직 단위 테스트가 없다면 작성하십시오. 그런 다음 리팩토링을 시작하고 모든 커밋마다 회귀 테스트를 계속 수행하십시오.

0

나는 refacter처럼 생각하고있다. 코드를 다시 써야한다면 그 코드를 다시 써야한다. 시간이 좀 걸리 겠지만, 많은 코드를 만들지 않기 때문에 장기적으로 더 나을 것이다. 문제.

+0

하지만 깨진 것은 아닙니다. 그것이 깨지면 리펙토링에 좋은 시간이 될 것입니다. – hometoast

+0

버그가 발생하기 쉬운 경우 함수가 제대로 작동하지 않는다고해서 깨지지 않았기 때문에 고장났습니다. 그것이 작동하는 유리의 꼭대기를 부수지만, 자르는 것은 쉽습니다. – UnkwnTech

+0

읽기 어렵다면 리팩토링이 성능을 향상시킬 수있는 가능성이 있습니다. 실제로 어떤 일이 일어나고 있는지 모르기 때문입니다. – UnkwnTech

2

그래, 더 보완 할 수있을 때까지 잠급니다.

레거시 코드에 관한 Michael Feathers의 책은 해당 팀에게 좋은 읽을 거리입니다. 물론 말하기는 쉽지는 않지만 특정 코드는 장기적으로 소프트웨어의 설계 빚이 될 수 있습니다.

3

Svn에는 동시 액세스 (소스 세이프와 유사)를 방지하기 위해 파일을 잠그기위한 설정이 있지만 두려운 코드 주위에 자동화 된 단위 테스트 및 통합 테스트를 빌드하는 것이 좋습니다. 다행히도 안전망으로 단단한 QA 그룹을 확보하시기 바랍니다.

1

라이브러리에 블랙 박스가있어 혼란 스러울 수 없습니다. 인터페이스를 잘 문서화하십시오.

1

단위 테스트를 완료하여 변경해야 할 경우에도 작동하는지 확인하십시오.

4

혼자 남겨주세요.

효과가있는 것만 큼 (그리고 잠재적 인 비용이 비싸기 때문에) 변경하는 것의 이점은 무엇입니까? 따라서 비용/이점 분석을 설명하면됩니다.

당신의 개발자가이 사실을 이해할만큼 똑똑하고, 그렇지 않다면, 소스 코드 제어 시스템 로그를 사용하여 단호하게 감아 서 죽음에 이길 수 있기를 바랍니다.

+0

코드베이스에 대한 추가 사항을 추가해야 할 수도 있습니다. 리팩터링하지 않으면 이러한 추가 작업을 수행하는 것이 더 위험 할 수 있습니다. –

+0

"stable"은 추가 할 필요가 없다는 의미로 읽 힙니다. 분명히, 그것이 안정적이지 않다면, 그것은 정리에서 이익을 얻지 만, 나는 이것이 그 질문이라고 생각하지 않는다. – paxdiablo

3
  1. 자동 단위 테스트를 작성하십시오. 유지 보수하는 코드를 테스트하는 테스트가있는 경우 수정으로 인해 코드가 손상되지 않았다는 것을 확신 할 수 있습니다. JUnit과 같은 테스트 프레임 워크가 도움이 될 수 있습니다.

  2. 마틴 파울러의 고전 서적 Refactoring 사본을 구하여 읽으십시오. 코드 냄새의 개념에 특히주의하십시오. 그러면 상황에 도움이되는 특정 리팩터링이 표시됩니다.

  3. 리팩토링 지원이 내장 된 좋은 IDE를 가져 오십시오. IDE는이 책의 모든 리펙토링을 지원하지 않지만 대부분 리팩토링을 지원하지는 않습니다. Java 세계에서 EclipseNetBeans은 무료이며 리팩터링을 지원합니다.

  4. 테스트가 실패했는지 여부를 추적하려면 Hudson과 같은 연속 통합 서버를 고려하십시오.

1

Subversion이있는 경우 코드가 단지 몇 개의 파일이 아니면 않는 한 파일을 잠그는 것은 대단히 중요하지 않습니다. Subversion은 하위 디렉토리를 잠글 수 없으며 개별 파일 만 잠글 수 있습니다. 게다가 자물쇠가 부러 질 수 있습니다.

아마도 커밋 훅 스크립트가 필요합니다. 꽤 많은 일을 할 수 있지만 특정 서브 디렉토리에 대한 액세스를 특정 사용자 (분기, SQL 스크립트)로 제한하는 데 사용했습니다. 또한 서버에 대한 액세스 권한이 없으면 사전 커밋 (pre-commit) 훅을 해제 할 수 없습니다.

에 관한 Version Control with Subversion 도서를 참조하십시오. Subversion 배포판에는 정확하게 이것을 수행하는 좋은 예가 포함되어 있어야합니다.

0

자동 빌드 및 단위 테스트를 설정하십시오. 변경 사항을 추적하는 모든 종류의 저장소가 좋지만 버그를 방지하지는 않습니다.

또한 변경 사항을 즉시 실행할 수 있습니다. 일찍 석방하고 종종 도움이되는 민첩한 방법론. 그렇게하면 더 깊게 들어갈 때 코드를 더 잘 이해할 수 있습니다.

기본적으로 가능한 경우 기능을 변경하지 않는 리팩토링으로 시작하십시오. 그런 다음 리팩토링 된 코드 위에 새로운 기능을 도입하십시오. 작고 고의적 인 변화로 천천히하십시오.

변경 사항이 적용되는 동안 소스를 잠그면 변경 내용과 위치를 의사 소통하는 데 도움이되지 않을 수 있습니다. 가장 좋은 방법은 열린 커뮤니케이션 채널을 만드는 것입니다. 슬래시 코드 (Slashcode)와 같은 것을 사용하여 공개 토론을하고 공개적으로 토론하고 질문을하고 기록을 남길 수 있습니다.

관련 문제