2012-10-24 2 views
1

"DO NOT DO IT"으로 나를 훈계하기 전에 "BAD PRICTICE!" 및 "올바른 소스 코드 컨트롤을 사용하는 방법을 배우십시오", 먼저 저를 들어 주시기 바랍니다. 나는 오래된 코드를 주석 처리하고 영원히 그 코드를 남겨 두는 습관이 매우 좋지 않다는 것을 완전히 알고있다.의견이있는 소스 코드 버전 관리 (조직 관행) - 탈퇴 또는 제거?

몇 달 전 소프트웨어 개발 업체로 입사했습니다. 저는 회사에 몇 달 동안 인턴으로 일 했었습니다. 최근에 입사하기 1 년 전이었습니다. 우리 회사는 소스 코드 버전 관리 (CVS)를 사용하지만 제대로 작동하지 않습니다.

내 인턴쉽과 현재의 영구직 모두에서 일어난 일이 있습니다. 프로젝트 (레거시, 약 8-10 세) 작업을 할 때마다. CVS 계정을 만들고 코드를 체크하고 변경 사항을 체크인시키는 대신, 한 고위 동료가 CVS에서 코드를 내 보낸 다음 압축하여 내게 전달했습니다.

이 동료는 몇 주마다 모든 변경 사항을 확인하지만 실제로는 실제 소스 코드 자체에서 세분화 된 버전 관리를 수행합니다 (각 파일은 나머지 파일과 독립적으로 버전이 증가합니다). 파일을 변경할 때마다 이전 코드가 주석 처리되고 새 코드가 그 아래에 입력되며이 전체 섹션에는 버전 번호가 표시됩니다. 변경 사항에 대한 참고 사항은 수정 내역 섹션의 파일 맨 위에 있습니다. 마지막으로 변경된 파일은 공유 폴더에 저장되며 대량 체크인을 준비하고 대기합니다.

/* 
* Copyright notice blah blah 
* Some details about file (project name, file name etc) 
* Modification History: 
* Date   Version  Modified By  Description 
* 2012-10-15 1.0   Joey   Initial creation 
* 2012-10-22 1.1   Chandler  Replaced old code with new code 
*/ 

code .... 
//v1.1 start 
//old code 
new code 
//v1.1 end 
code .... 

이제 문제가 발생했습니다. 필자가 진행중인 프로젝트에서 다른 프로젝트의 소스 코드 파일을 복사해야했습니다. 새로운 의미는 이전에 대상 프로젝트에 없었기 때문입니다. 이 파일들은 역사적으로 주석 처리 된 많은 코드와 주석 기반 버전 관리를 일반적으로 길거나 매우 긴 것을 포함합니다. 수정 내역 섹션.

파일이이 프로젝트에서 새롭기 때문에이를 정리하고 기록 코드를 포함한 불필요한 코드를 제거하고 버전 1.0에서 새로 시작하기로 결정했습니다. (필자는 미안함에도 불구하고 여전히 주석 기반 버전 관리를 계속해야하며 버전 0.1에서 시작하지 않는 이유는 묻지 않는다 ...) 인턴쉽 중 비슷한 일을 해왔지만 아무도 아무 말도하지 않았다. 상사가 그 작업을 몇 차례 보았고 그런 정리를해서는 안된다고 말하지 않았습니다 (전혀 눈치 채지 못했다면).

그러나 같은 수준의 동료가 이것을보고 향후 중단 시간을 유발하고 유지 관리 비용을 증가시킬 수 있으므로 권장하지 않는 것이라고 말했습니다. 예를 들어 원본 파일의 다른 프로젝트에서 변경이 이루어지고 이러한 변경 사항이이 프로젝트에 전파되어야 할 때입니다. 코드 파일이 크게 달라지면 전파하는 다른 개발자에게 혼동을 줄 수 있습니다. 그것은 나에게 의미가 있으며, 유효한 점입니다. 엄청나게 엉망인 코드의 불편 이외에 정리를 할 이유가 없었습니다.

짧은 이야기 : 우리 회사에서 연습을 감안할 때 프로젝트간에 새 파일을 복사 할 때 정리를하지 않아야합니까? 코멘트에 전체 이력을 가진 원본 코드의 복사본을 변경하는 것이 더 좋습니까? 또는 정리 작업에 대한 근거는 무엇입니까? 개조에

PS : 어떤 이유로 당신이 SO에 부적합한 것으로 결정하는 경우에도이 질문에 몇 시간을 허용 바랍니다.태그를 포함하여 부적절한 것이 있으면 미리 사과드립니다.

+9

답변은 실제로 1) 귀사의 회사 정책에 따라 2) 관련 사람들과 회의를하고 적절하게 소스 제어를 사용하고 얼마나 많은 시간/비용으로 회사를 구할 지 설명하십시오. 3) 새로운 직장을 구하십시오. 그 이외에, 나는 정직하게 도덕적 인 지원을 제공하는 것 외에 우리가 여기서 당신을 위해 할 수있는 일을 확신하지 못합니다. –

+0

어쩌면 이것은 직장 SE에 맞습니까? –

+0

고맙습니다. 내가 궁금해하는 점은 새 파일을 정리하면 미래의 가동 중단 시간이 늘어나고 필자는이를 피해야 하는지를 반복하고 싶습니다. 코드 실무에 대한 문서화 된 정책은 없으며 역사가 프로젝트마다 유지되어야하는지 여부에 대한 언급이 없습니다. 필자는 현재의 관행에 대한 통제권이 없으며 많은 프로젝트에서 수년간 이것을 해왔다 (코멘트 버저 닝). 그들은 완전한 스위치를 만드는 대신 CVS를 원래의 버전 제어 방식으로 보완합니다. 다음 1.75 년 동안 수평선에 새로운 직업 : ( – ADTC

답변

1

다른 프로젝트의 일부 파일을 실제로 복사하면 (이 소스의 경우) "발산 지점"과 소스 및 포크의 병렬 독립적 인 진화가 레거시 기록 및 주석 처리 된 코드보다 효과적으로 "화이트 노이즈"이며 쉽게 수행 할 수 있습니다 당신 편에서 제거되었습니다. 부모로부터의 향후 전파 가능성은 의 "분기 지점"만 언급하면 ​​은 수정 내역의 첫 번째 줄에 충분합니다. 같은 아스 커 (ADTC)에 의해

... 
* Date   Version  Modified By  Description 
* 2012-10-25 1.0   ADTC   Created from 12.34 of <filename> 
... 

부록 : 나는 위의 대답에 추가 코멘트를 인용하고 싶습니다.

[...] 어떤 (역사 댓글) 한 사람에 관한 의견을 제거, 소스 코드를 가지고 있지만, 소스 코드/클래스/메소드는 (정보 의견) 무엇에 관한 의견을 유지. 그것이 바로 코멘트 섹션이되어야 할 부분입니다. 메소드가 수행하는 작업, 구현 방법 및 예외 상황이 발생하는 조건을 명확하게 정의해야합니다. - 내가 당신의 위치를 ​​하겠어 경우 Wins, 2012-10-25 00:57:57Z

+0

마크에 맞았습니다. 감사합니다. – ADTC

0

직접 버전 컨트롤을 사용하는 것이 좋습니다 - git을 권장합니다. 고위 동료가 현재 갖고있는 것과 상 관되는 "업스트림"코드에 대해 하나의 지회를 만듭니다. 그런 다음 작업을 위해 하나 이상의 지점을 가질 수 있습니다. "업스트림"브랜치에 대해 git diff을 사용하여 변경 한 내용을 간략하게 볼 수 있습니다.이 프로젝트에서 수행 한 모든 작업의 ​​이력을 검색 할 수 있습니다.이 모든 작업은 수동으로 코드를 작성하지 않고도 자동으로 수행되며 파일은 항상 "깨끗합니다" 그들의 모든 역사를 git에서 사용할 수 있습니다.

+0

제안 주셔서 감사하지만 제 질문은 다른 프로젝트에서 복사 한 새로운 파일에 대한 코드 정리가 괜찮은지 아니면 앞으로 문제가 생길지 여부입니다. – ADTC

1

, 내 프로젝트 내에서 사용되는 라이브러리로 다른 소스 코드를 수정하기 위해 원합니다.

+0

좋은 제안이지만 할 수 없습니다. 회사가 프로젝트에서 프로젝트에 이르기까지 매우 다양한 사양으로 인해 매우 일반적인 것 외에는 라이브러리를 만들지 않는 것 외에도. . – ADTC

+1

이 경우 소스 코드를 가져 와서 누가 무엇을했는지에 대한 설명을 제거하고 소스 코드/클래스/메소드가하는 것에 관한 의견을 유지하십시오. 이것이 바로 주석 섹션의 정의입니다. 메소드가 무엇을하는지, 어떻게 구현되는지, 어떤 조건에서 예외가 던져 질지 등등. – Wins

+0

예 정보 주석을 남겨 두어야합니다. nly 히스토리 코멘트를 삭제합니다. – ADTC