변경하기 위험하지만 안정적인 코드를 처리하는 방법은 무엇입니까?[닫은]

StackOverflow https://stackoverflow.com/questions/99474

  •  01-07-2019
  •  | 
  •  

문제

안정적인 코드에 액세스할 수 있지만 버그가 발생하기 쉬운 코드가 없는 대규모 팀을 처리하는 가장 좋은 방법은 무엇입니까?

파일을 잠그는 SVN 라인을 따라 뭔가를 찾고 있습니다.

도움이 되었습니까?

해결책

아직 단위 테스트가 없다면 단위 테스트를 작성하세요.그런 다음 리팩토링을 시작하고 커밋할 때마다 회귀 테스트를 계속 수행합니다.

다른 팁

그냥 내버려두라고 말하세요.

효과가 있고, 예쁘게 꾸미는 것(잠재 비용이 높음) 외에 변경하면 어떤 이점이 있으므로 비용/혜택 분석만 설명하면 됩니다.

나는 당신의 개발자가 이것을 이해할만큼 똑똑하길 바랍니다. 그렇지 않다면 소스 코드 제어 시스템 로그를 사용하여 단단히 묶어서 그들을 이길 수 있습니다.-) .

Svn에는 동시 액세스를 방지하기 위해 파일을 잠그는 설정이 있지만(Source Safe와 유사) 두려운 코드를 중심으로 자동화된 단위 테스트 및 통합 테스트를 구축하는 것이 좋습니다.안전망으로서 견고한 QA 그룹이 있기를 바랍니다.

  1. 자동화된 단위 테스트를 작성합니다.유지 관리 중인 코드를 테스트하는 테스트가 있는 경우 수정 사항으로 인해 코드가 손상되지 않았음을 확신할 수 있습니다.다음과 같은 테스트 프레임워크 JUnit 도울 수있다.

  2. 마틴 파울러(Martin Fowler)의 고전 책을 받아보세요 리팩토링 그리고 읽어보세요.코드 냄새의 개념에 특히 주의하세요.이를 통해 상황에 도움이 되는 특정 리팩토링을 알려줄 것입니다.

  3. 리팩토링 지원이 내장된 좋은 IDE를 구입하세요.IDE는 이 책에 나오는 모든 리팩토링을 지원하지는 않지만 대부분은 여러 가지 리팩토링을 갖고 있습니다. 그리고 넷빈즈 Java 세계에서는 무료이며 리팩토링을 잘 지원합니다.

  4. 다음과 같은 지속적인 통합 서버를 고려하십시오. 허드슨 강 테스트가 실패했는지 추적합니다.

예, 유지 관리가 더 용이한 대체품을 작성할 수 있을 때까지 잠그십시오.

레거시 코드에 관한 Michael Feathers의 책은 해당 팀에게 좋은 자료가 될 것입니다.물론 말처럼 쉽지는 않지만 특정 코드는 장기적으로 소프트웨어의 설계 부채가 될 수 있습니다.

훼손되지 않도록 도서관에 블랙박스로 보관하세요.인터페이스를 잘 문서화하십시오.

변경해야 하는 경우에도 여전히 작동하는지 확인할 수 있도록 완전한 단위 테스트를 생성합니다.

Subversion이 있는 경우 코드가 단지 몇 개의 파일이 아닌 이상 파일을 잠그는 것은 그리 어렵지 않습니다.Subversion을 사용하면 하위 디렉터리를 잠글 수 없으며 개별 파일만 잠글 수 있습니다.게다가 자물쇠가 깨질 수도 있습니다.

아마도 당신이 원하는 것은 사전 커밋 후크 스크립트입니다.거의 모든 작업을 수행할 수 있지만 저는 특정 하위 디렉터리에 대한 액세스를 특정 사용자(분기, SQL 스크립트)로 제한하는 데 이를 사용했습니다.또한 서버에 액세스할 수 없으면 사전 커밋 후크를 끊을 수 없습니다.

참조 Subversion을 사용한 버전 제어 예약하다 저장소 후크 구현.Subversion 배포판에는 이를 정확히 수행하는 방법에 대한 몇 가지 좋은 예가 포함되어야 합니다.

나는 리팩터에 더 가깝다고 생각합니다. 코드가 작업하기 어려운 경우 다시 작성해야 하며 시간이 좀 걸릴 수 있지만 많은 문제를 일으키지 않으므로 장기적으로 더 나을 것입니다.

자동화된 빌드 및 단위 테스트를 설정합니다.변경 사항을 추적하는 모든 종류의 저장소는 좋지만 버그를 방지할 수는 없습니다.

또한 즉시 실행할 수 있는 변경만 수행하세요.조기 릴리스를 말하고 종종 도움이 되는 Agile 방법론입니다.이렇게 하면 코드를 더 깊이 파고들수록 코드를 더 잘 이해할 수 있습니다.

기본적으로 가능하다면 기능을 변경하지 않는 리팩토링부터 시작하세요.그런 다음 리팩터링된 코드 위에 새로운 기능을 도입하세요.작고 의도적인 변화를 천천히 해보세요.

변경이 이루어지는 동안 소스를 잠그는 것은 무엇이 변경되고 어디에서 변경되는지 전달하는 것만큼 도움이 되지 않을 것입니다.가장 좋은 접근 방식은 열린 커뮤니케이션 채널을 만드는 것입니다.Slashcode와 같은 것을 사용하여 공개적으로 토론하고 질문하고 기록을 남길 수 있는 포럼을 설정하세요.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top