코드가 이미 작성되었으며 노력이 소요됩니다.
또한 불필요합니다. 당신이 그것을 아무것도 사용하지 않는다면, 그것이 무엇을하는지 또는 그것에 얼마나 많은 노력을 쏟았는지에 관계없이 (정의상) 쓸모가 없습니다.
코드는 구문 및 실제 환경에서 테스트 될 수 있습니다.
쓸모 없다면 테스트를해도 쓸모가 없다. 코드가 쓸모 없으면 테스트도 쓸모가 없어야합니다 (주석 코드를 그대로 유지하면 모호함이 생깁니다. 테스트를 유지합니까? 주석 코드의 클라이언트 코드가있는 경우 클라이언트 코드도 주석 처리합니까? )
잘 구성되어 있으면 (그룹화, 개별 패키지, 느슨하게 결합 된 등) 전체 코드 분석이나 리팩토링에 방해가되지 않습니다.
별로. 모든 도구 (소스 제어, 정적 분석, 문서 추출기, 컴파일러 등)는 더 많은 데이터를 처리해야하기 때문에 느리게 실행됩니다 (데이터의 더 크거나 작은 부분은 노이즈 임).
반면에 코드가 잘 구성 되지 않으면 정적 분석, 리팩토링 및 기타 문제가 발생합니다.
도구 입력에 노이즈를 도입하고 올바르게 대처하기를 바랍니다.
정적 분석 도구가 주석 / 코드 비율을 계산하면 어떨까요? 어제까지 (또는 코드가 주석 처리 될 때마다) 관련이있는 내용으로 방금 엉망으로 만들었습니다.
무엇보다도, 주석 처리 된 코드 블록은 유지 관리 및 추가 개발을 위해 코드를 이해하는 데 지연을 유발하며 이러한 지연은 거의 항상 많은 비용이 듭니다. 스스로에게 물어보십시오. 함수의 구현을 이해해야한다면 무엇을보아야합니까? 두 줄의 명확한 코드, 아니면 두 줄의 코드와 더 이상 실제가 아닌 26 개의 주석?
나중에 코드가 사용될 수 있습니다.
그렇다면 팀의 선택한 SCM에서 찾을 수 있습니다.
유능한 SCM을 사용하고 데드 코드를 유지하는 데 의존하는 경우 (소스를 복잡하게 만드는 대신) 누가 해당 코드를 삭제했는지 (커밋 작성자)뿐만 아니라 어떤 이유로 (커밋 메시지) 어떤 이유로 그것과 함께 변경되었습니다 (그 커밋에 대한 나머지 diff).
삭제되면 작성자가 불편 함을 느낄 수 있습니다.
그래서?
당신은 "X의 감정을 해치지 않고 당신이 아는 최고의 소프트웨어"가 아니라 당신이 아는 최고의 소프트웨어를 만들기 위해 돈을받는 전체 개발자 팀입니다.
작성된 대부분의 코드가 궁극적으로 폐기되는 것은 프로그래밍의 일부입니다. 예를 들어, Joel Spolsky는 어느 시점에서 그의 회사의 경우 작성된 코드의 약 2 %가 생산을 본다고 말했습니다.
코드베이스의 품질보다 개발자의 자아를 우선시한다면 제품의 품질을 희생하게 될 것입니다. 정확히 무엇을 위해? 동료 개발자의 미숙함을 유지하고 계십니까? 동료의 비현실적인 기대를 보호하고 계십니까?
편집 : 주석 처리 된 코드를 소스에 남겨 두는 한 가지 유효한 이유를 보았습니다. 이는 매우 구체적인 경우입니다. 코드가 이상하고 직관적이지 않은 형식으로 작성되고 깔끔한 재 작성 방법은 그렇지 않습니다. 정말 미묘한 이유로 작동합니다. 이것은 또한 문제를 해결하기 위해 반복적 인 시도를 한 후에 그리고 시도가 동일한 결함을 다시 도입 할 때마다 적용되어야합니다 . 이 경우 주석 처리 된 직관적 인 코드를 주석으로 추가하고 작동하지 않는 이유를 설명해야합니다 (그러므로 미래의 개발자는 동일한 변경을 다시 시도하지 않을 것입니다).
// note by <author>: the X parameter here should normally
// be a reference:
// void teleport(dinosaur& X);
// but that would require that we raise another dinosaur and
// kill it every twelve hours
// as such, the parameter is passed by value
void teleport(dinosaur X);