안정적인 코드에 액세스 할 수있는 큰 팀을 처리하는 가장 좋은 방법은 무엇입니까? 버그를 도입하기 쉽습니다.변경하는 것이 위험하지만 위험하다고 생각되는 코드를 처리하는 방법은 무엇입니까?
나는 파일을 잠그는 SVN 행을 따라 뭔가를 찾고있다.
안정적인 코드에 액세스 할 수있는 큰 팀을 처리하는 가장 좋은 방법은 무엇입니까? 버그를 도입하기 쉽습니다.변경하는 것이 위험하지만 위험하다고 생각되는 코드를 처리하는 방법은 무엇입니까?
나는 파일을 잠그는 SVN 행을 따라 뭔가를 찾고있다.
아직 단위 테스트가 없다면 작성하십시오. 그런 다음 리팩토링을 시작하고 모든 커밋마다 회귀 테스트를 계속 수행하십시오.
나는 refacter처럼 생각하고있다. 코드를 다시 써야한다면 그 코드를 다시 써야한다. 시간이 좀 걸리 겠지만, 많은 코드를 만들지 않기 때문에 장기적으로 더 나을 것이다. 문제.
그래, 더 보완 할 수있을 때까지 잠급니다.
레거시 코드에 관한 Michael Feathers의 책은 해당 팀에게 좋은 읽을 거리입니다. 물론 말하기는 쉽지는 않지만 특정 코드는 장기적으로 소프트웨어의 설계 빚이 될 수 있습니다.
Svn에는 동시 액세스 (소스 세이프와 유사)를 방지하기 위해 파일을 잠그기위한 설정이 있지만 두려운 코드 주위에 자동화 된 단위 테스트 및 통합 테스트를 빌드하는 것이 좋습니다. 다행히도 안전망으로 단단한 QA 그룹을 확보하시기 바랍니다.
라이브러리에 블랙 박스가있어 혼란 스러울 수 없습니다. 인터페이스를 잘 문서화하십시오.
단위 테스트를 완료하여 변경해야 할 경우에도 작동하는지 확인하십시오.
혼자 남겨주세요.
효과가있는 것만 큼 (그리고 잠재적 인 비용이 비싸기 때문에) 변경하는 것의 이점은 무엇입니까? 따라서 비용/이점 분석을 설명하면됩니다.
당신의 개발자가이 사실을 이해할만큼 똑똑하고, 그렇지 않다면, 소스 코드 제어 시스템 로그를 사용하여 단호하게 감아 서 죽음에 이길 수 있기를 바랍니다.
코드베이스에 대한 추가 사항을 추가해야 할 수도 있습니다. 리팩터링하지 않으면 이러한 추가 작업을 수행하는 것이 더 위험 할 수 있습니다. –
"stable"은 추가 할 필요가 없다는 의미로 읽 힙니다. 분명히, 그것이 안정적이지 않다면, 그것은 정리에서 이익을 얻지 만, 나는 이것이 그 질문이라고 생각하지 않는다. – paxdiablo
자동 단위 테스트를 작성하십시오. 유지 보수하는 코드를 테스트하는 테스트가있는 경우 수정으로 인해 코드가 손상되지 않았다는 것을 확신 할 수 있습니다. JUnit과 같은 테스트 프레임 워크가 도움이 될 수 있습니다.
마틴 파울러의 고전 서적 Refactoring 사본을 구하여 읽으십시오. 코드 냄새의 개념에 특히주의하십시오. 그러면 상황에 도움이되는 특정 리팩터링이 표시됩니다.
리팩토링 지원이 내장 된 좋은 IDE를 가져 오십시오. IDE는이 책의 모든 리펙토링을 지원하지 않지만 대부분 리팩토링을 지원하지는 않습니다. Java 세계에서 Eclipse 및 NetBeans은 무료이며 리팩터링을 지원합니다.
테스트가 실패했는지 여부를 추적하려면 Hudson과 같은 연속 통합 서버를 고려하십시오.
Subversion이있는 경우 코드가 단지 몇 개의 파일이 아니면 않는 한 파일을 잠그는 것은 대단히 중요하지 않습니다. Subversion은 하위 디렉토리를 잠글 수 없으며 개별 파일 만 잠글 수 있습니다. 게다가 자물쇠가 부러 질 수 있습니다.
아마도 커밋 훅 스크립트가 필요합니다. 꽤 많은 일을 할 수 있지만 특정 서브 디렉토리에 대한 액세스를 특정 사용자 (분기, SQL 스크립트)로 제한하는 데 사용했습니다. 또한 서버에 대한 액세스 권한이 없으면 사전 커밋 (pre-commit) 훅을 해제 할 수 없습니다.
에 관한 Version Control with Subversion 도서를 참조하십시오. Subversion 배포판에는 정확하게 이것을 수행하는 좋은 예가 포함되어 있어야합니다.
자동 빌드 및 단위 테스트를 설정하십시오. 변경 사항을 추적하는 모든 종류의 저장소가 좋지만 버그를 방지하지는 않습니다.
또한 변경 사항을 즉시 실행할 수 있습니다. 일찍 석방하고 종종 도움이되는 민첩한 방법론. 그렇게하면 더 깊게 들어갈 때 코드를 더 잘 이해할 수 있습니다.
기본적으로 가능한 경우 기능을 변경하지 않는 리팩토링으로 시작하십시오. 그런 다음 리팩토링 된 코드 위에 새로운 기능을 도입하십시오. 작고 고의적 인 변화로 천천히하십시오.
변경 사항이 적용되는 동안 소스를 잠그면 변경 내용과 위치를 의사 소통하는 데 도움이되지 않을 수 있습니다. 가장 좋은 방법은 열린 커뮤니케이션 채널을 만드는 것입니다. 슬래시 코드 (Slashcode)와 같은 것을 사용하여 공개 토론을하고 공개적으로 토론하고 질문을하고 기록을 남길 수 있습니다.
하지만 깨진 것은 아닙니다. 그것이 깨지면 리펙토링에 좋은 시간이 될 것입니다. – hometoast
버그가 발생하기 쉬운 경우 함수가 제대로 작동하지 않는다고해서 깨지지 않았기 때문에 고장났습니다. 그것이 작동하는 유리의 꼭대기를 부수지만, 자르는 것은 쉽습니다. – UnkwnTech
읽기 어렵다면 리팩토링이 성능을 향상시킬 수있는 가능성이 있습니다. 실제로 어떤 일이 일어나고 있는지 모르기 때문입니다. – UnkwnTech