문제

왜 추가하겠습니까?

// 버그 1024

소스 제어 코드베이스에 주석? 대부분의 버그 추적 및 소스 제어 시스템은이 정보를 추적 할 수 있도록 더 잘 갖추어져 있습니다. 소스 컨트롤에서는 레이블 또는 주석을 체크인과 함께 사용할 수 있습니다. 버그 추적기에서 수정 번호는 버그의 해상도에 추가 할 수 있습니다. 그렇다면 왜 코드에 댓글을 달 수 있습니까? 이러한 의견 관련성은 매우 짧기 때문에 특히 코드 기반을 쓰레기를 구축하는 경향이 있습니다.

도움이 되었습니까?

해결책

나는 다른 날에 우리 코드 기반에서 도움이되는 것을 발견했습니다.

나는 "왜 그는 초기화 기능을 두 번째로 부르고 있는가?

버그 주석은 문제 설명을 올바르게 올리게하겠습니다. 코드를 다시 설치했을 때 테스트에 버그를 포함시켜야했고 다시 소개하지 않았습니다.

비록 나는 일반적으로 당신에게 동의하고 그 사람들을 직접 삽입하지 않는다고 말할 것입니다.

문제의 개발자가 버그를 더 의미있는 방식으로 고쳐서 처음부터 코드에 대해 궁금해 할 필요가 없었습니다.

다른 팁

궁극적으로, 나는 그것이 나쁜 연습이라고 생각합니다. 버그가 존재하는 이유를 포함시키는 것이 좋습니다 (유형 y의 푸스에는 속성 z가 없습니다). 원하는 경우 "Bugid 12345에 더 많은"을 포함시킬 수 있습니다.

여러 레벨에서 통합하는 경우 TRAC의 소스 코드보기가 BugID에 직접 연결될 수 있습니다.

순수한 게으름. 물론, 장기적으로는 더 많은 시간이 걸리지 만 단기적으로 "// 버그 1024"는 전혀 노력하지 않습니다. 코드가 많을수록 더 나빠집니다.

개정 12345의 변경으로 추적하는 새로운 버그가 있다고 상상해보십시오. 로그를보고 즉시 버그 1024가 변경된 이유라고 알려줍니다.

그런 다음 1024를보고 새로운 수정을하기 전에 무엇을, 왜 그리고 언제, '그들 모두를 지배 할 것'을 볼 수 있습니다.

버그 번호가 커밋 메시지에 있지 않으면 커밋이 고정 된 버그를 검색해야하며 여러 개일 수 있습니다 (버그가 두 번 이상보고 된 경우).

나는 이것이 "나는 망치가있다, 그것은 손톱이어야한다"는 경우라고 생각한다. 텍스트 편집기 또는 IDE가 코드를 관리하는 유일한 도구는 아닙니다.

역사는 코드 외부에서 가장 잘 유지됩니다. 코드의 의미는 즉시 명백하지 않은 경우 주석에 설명해야합니다.

버그 번호는 소스 제어 커밋 메시지에 있어야한다는 데 동의합니다.

버그 번호 만 추가해서는 안됩니다. 단일 버그에 대해 여러 개의 체크인을 만든 경우 버그 번호와 피사체 및 예선을 추가해야합니다.

버그 1111- 64 비트 시스템에서 Foo가 파열되었습니다. 트렁크 병합 후 재개되었으므로 #2를 수정하십시오.

일부 시스템에는 버그 번호 통합이 있습니다. mxr.mozilla.org에서 CVS 로그 디스플레이의 버그 번호는 자동 마법 적으로 Bugzilla.mozilla.org에 대한 링크로 바뀝니다. 코드를 파고있을 때 이것은 거대한 타임즈 베이비입니다. Fogbugz가 비슷한 기능을 가지고 있다고 생각합니다 ...

또한 시스템이 그렇지 않더라도 주석 변경의 전체 컨텍스트를보고 싶어하지 않기 때문에 종종 도움이됩니다. 이것이 바로 버그 추적기의 것입니다.

나는 이와 같은 의견이 실제로 도움이되지 않고 너무 짧다는 것에 동의합니다.

그러나 결함 추적 시스템의 레코드에 대한 참조로 코드를 주석하는 것이 매우 유용하고 중요합니다 (또는 해당 KM 리포지토리로 확장).

때로는 응용 프로그램 동작의 특정 문제에 대한 해결 방법을 구현하기 위해 코드가 변경되기도합니다. 때로는 소개 된 해결 방법이 논리적이지 않습니다. 다른 사람이 코드를 업데이트 할 때이 '나쁜'코드 조각이 재 점수 노력의 일부로 제거되는 경우가 종종 있습니다.

따라서 코드를 특정 버그 고정에 속하는 것으로 표시하면 재 요점 중에 볼 수있게되므로 코드를 변경하기 전에 개발자가 버그 설명을 검토 할 수 있습니다. 또한 버그가 다시 열리는 상황에서 도움이됩니다. 코드의 동일한 부분을 여러 번 변경 해야하는 경우 대체 솔루션에 시간을 투자하는 것을 고려할 수 있습니다.

추신 당신은 고려할 수 있습니다 이것 소프트웨어에 대한 Joel의 MS Office에 관한 기사가 도움이됩니다. 내가 아는 한, MS Office와 MS Windows의 코드는 개발자들이 오랫동안 사라진 결정을 설명하는 비슷한 의견으로 가득 차 있습니다.

그렇지 않으면 잘못된 것처럼 보이는 코드를 설명하고 커밋 메시지에 사용하는 것이 유용하다고 생각합니다.

나는 그렇게하지 않는다. 결함 ID를 코드에 넣는 이유를 생각할 수 없습니다. 대신 릴리스 노트/changelog에 넣을 것입니다.

내가 유용한 것은 자동화 된 테스트에서 결함 ID를 이름의 일부로 사용하는 것입니다.

[TestFixture]
public class Release_1_2_Bugfixes
{
  [Test]
  public void TestBug42()
  {
    Assert.AreEqual(42, CalculateAnswerToLifeUniverseAndEverything());
  }
}

나는 본 적이 다른 프로젝트 같은 일을하고 있습니다.

나는 얼마나 많은 사람들이 이것에 반대하고 있는지 놀랐습니다. 이것에 대한 나의 개인적인 느낌은 좋은 아이디어. 나는 단지 버그 번호 이상을 포함해야한다는 이전 의견에 동의하며, 간단한 요약과 적절한 경우 버그 추적 시스템에 대한 링크를 포함합니다.

이러한 의견의 이점은 역사와 많은 이전 버그 수정이있는 오래된 프로젝트에서만 분명합니다. 당신은 어디에서나 이러한 의견을 만들 필요가 없지만 상황 없이는 의미가없는 코드 블록 앞에 배치 할 때 매우 도움이됩니다. 합리적으로 복잡한 시스템에는 컨텍스트없이 비논리적이거나 불필요하게 보이는 코드 스 니펫이 있습니다.

시스템 또는 기존 해결 방법과의 상호 작용으로 인해 코드 ~이다 필요한. 나중에 누군가가 패치 된 버그를 다시 소개하는 것을 방지하기 위해 코드 블록이 수정하도록 설계된 버그를 나타내는 것이 매우 도움이됩니다. 그렇지 않으면 Commit Log에 기록 된 이유에 대해 Commit History를주의 깊게 확인하는 누군가에 의존하는 경우가 많습니다. 특히 누군가가 리팩토링 코드 인 경우에는 거의 없습니다.

편집하다: 나는 특별히 이것들을 비정상적이거나 추가 컨텍스트가 필요한 코드 블록으로 배치하는 것을 언급하고 있습니다. 당신이 만드는 모든 오타 수정 사항을 모두 댓글을 달아야 할 것은 도움이되지 않습니다 :-)

나는 Visual Studio 2008이 주석을 달성 할 때까지 이것을했다. 이전 코드를 되돌아 보면 즉시 특정 코드 결정에 대한 생각이 있음을 즉시 확인할 때 유용했습니다.

그렇습니다. 이전 버전과 비교할 수 있다는 것을 알고 있지만 사소한 코드 업데이트에 대해 빠르게 기분이 좋을 때 엉덩이가 고통 스럽습니다.

익숙하지 않은 소스 코드를 탐색하고 눈에 띄지 않는 것을 본다면 그 이유를 아는 것이 좋습니다. 그러나 모든 버그 수정에 그러한 설명이 필요한 것은 아닙니다. 아마도 대부분은 그것없이 도망 갈 수 있습니다.

코드의 일부를 볼 때 누군가가 버그 번호를 알고 싶어할만한 충분한 이유가 있다면, 버그를 언급하는 의견을 추가하는 것은 상당히 좋을 수 있습니다 (그러나 버그의 중요한 비트도 역설적으로도 제기 할 수 있습니다).

예, 소스 제어 커밋 메시지는 버그 번호도 포함되어야하며 개정 로그를 살펴보면 동일한 정보를 제공 할 수 있지만 코드의 동일한 부분이 여러 번 변경되지만 초기 버그에서 학습 된 세부 사항 적용되면 해당 버그에 대해 배우려면 원래 변경을 찾는 데 시간이 걸릴 수 있습니다.

또한 한 클래스에서 다른 클래스로 코드를 이동 해야하는 정당한 이유가 있거나 파일 이름을 바꾸는 것이 좋은 상황이 발생하여 특정 코드 섹션 뒤에있는 이유의 근본을 찾기가 더 어려워집니다 (그다지 많은 이름을 바꾸지 않습니다. SVN에 문제가 있지만 CVS의 통증).

당신은 "관련성은 매우 짧아서 코드 기반을 쓰레기를 쌓는 경향이 있습니다."

소스 파일에 쌓이는 모든 쓸모없는 cruft는 읽기 쉽고 유지 관리가 어렵습니다. 가치를 더하지 않는 모든 것을 삭제하십시오. "버그 12345"는 현재 가치가 거의 없으며 몇 주 안에 아무것도 없을 것입니다.

우리는 많은 개발자와 다수의 출시 지점과 함께 대규모 시스템에서 일하고 있습니다.

이 버그 참조 주석은 우리가 사용하는 SCM 시스템이 매우 저조하고 커밋 댓글이 접근하기 어렵고 상당히 오래 될 수 있기 때문에 한 분기에서 다른 분기로 포팅하는 동안 실제로 매우 유용 할 수 있습니다.

수정이 단순하면 버그 마커가 필요하지 않을 수 있습니다. 무성한 경우 버그를 참조하는 것이 더 합리적 일 수 있으며 주석 섹션에 긴 설명을 작성하는 것이 더 합리적 일 수 있습니다.

나는 이런 종류의 낙서를 싫어한다. 다른 불쾌한 생명체와 마찬가지로 시간이 지남에 따라 코드 기반을 질식시킵니다.

사람들이 이전 버그 수정과 겹치는 버그 수정을 할 때 문제가 실제로 시작됩니다. 그런 다음 단순히 잘못되었거나 오도하는 코드 섹션에 레이블을 지정하는 버그 번호가 있습니다.

이 유형의 댓글 이다 매우 도움이됩니다 : 버그 추적 또는 소스 제어 도구를 변경하면 어떻게됩니까? BZ1722 vs FB3101에 대한 참조는 어떤 추적 도구를 확인 해야하는지 알려줍니다 (예 : Bugzilla 또는 Fogbugz).

좋은 일입니다!

코드를보고있는 사람은 코드의 전체 역사를 인식하지 못할 가능성이 높으며 이전 에이 코드 영역에서 작동하지 않았기 때문에 매우 중요한 변경 사항을 취소 할 가능성이 높습니다. 그렇지 않으면 미쳤거나 동등한 기괴한 고객 요구 사항을 설명하는 코드를 설명 할 수 있습니다.

아키텍처 및 코드를 통해 고객 요구 사항의 미세한 세부 사항을 항상 캡처 할 수는 없습니다. 그러므로 당신은 합리적으로 시작한 다음 강제로 강제 할 때 코드를 바보로 개선하거나 해킹하면 버그 번호는 미친 코드의 의도를 백업합니다.

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