다음은 코드 섹션에 주석을 추가할지 여부를 생각할 때 나 자신에게 묻고 싶은 질문입니다. 다음 사람 이 코드 의 전반적인 의도 를 더 잘 이해하여 업데이트, 수정 또는 업데이트 할 수 있도록 무엇을 전달할 수 있습니까? 더 빠르고 안정적으로 확장 하시겠습니까?
때로는이 질문에 대한 정답은 코드의 해당 지점에 추가 할 수있는 것이 아무것도 없다는 것입니다. 이미 의도를 명확하게하는 이름과 규칙을 이미 선택했기 때문입니다. 그것은 당신이 견고한 자체 문서화 코드를 작성했으며, 주석을 삽입하면 도움이되는 것보다 더 혼란 스러울 수 있음을 의미합니다. (중복 된 주석은 시간이 지남에 따라 실제 코드와의 동기화가 느려져서 실제 의도를 해독하기 어렵게하여 시간이 지남에 따라 코드 안정성을 실제로 손상시킬 수 있습니다.
그러나 거의 모든 프로그램과 프로그래밍 언어에서 원래 프로그래머가 결정한 중요한 개념과 결정이 더 이상 코드에서 명확하지 않은 지점에 직면하게됩니다. 훌륭한 프로그래머는 항상 미래를위한 프로그램, 즉 프로그램을 한 번만 작동시키는 것이 아니라 앞으로의 많은 수정 사항과 버전, 확장 및 수정 및 포트를 만들고 무엇을해야하는지 알기 때문에 피할 수없는 일입니다. 또한 올바르게 작동합니다. 후자의 목표는 훨씬 더 어려우며 잘하려면 더 많은 생각이 필요합니다. 그 무엇을 말에,이다 -이 기능에 더 집중되어 대부분의 컴퓨터 언어로 잘 표현하는 것이 매우 어려운 이 프로그램의 버전을 만족시키기 위해서는 지금해야합니다.
여기에 내가 의미하는 바의 간단한 예가 있습니다. 대부분의 언어에서 작은 데이터 구조를 신속하게 인라인으로 검색하면 처음 보는 사람이 그 구조를 즉시 인식하지 못할 정도로 복잡성이 충분합니다. 코드 의 의도 에 대해 나중에 독자가 세부 사항을 해독하는 데 도움이 될 것으로 즉시 인식 할 수있는 무언가를 추가 할 수 있기 때문에 좋은 의견을 제시 할 수있는 기회입니다 .
반대로, 같은 로직 기반 언어 프롤로그와 같은 언어로, 작은 목록의 검색을 표현하는 것은 너무 믿을 수 없을 정도로 단순하고 간결 할 수 있는 당신이 추가 할 수 있습니다 댓글이 단지 소음이 될 것입니다. 따라서 올바른 주석은 상황에 따라 달라집니다. 여기에는 사용중인 언어의 강점 및 전체 프로그램 컨텍스트와 같은 요소가 포함됩니다.
결론은 이것입니다. 미래를 생각하십시오. 앞으로 프로그램을 이해하고 수정하는 방법에 대해 중요하고 분명한 것이 무엇인지 자문 해보십시오. [1]
실제로 자체 문서화되는 코드 부분의 경우 주석은 노이즈를 추가하고 향후 버전의 일관성 문제를 증가시킵니다. 따라서 거기에 추가하지 마십시오.
그러나 여러 옵션에서 결정을 내리거나 목적 자체가 모호 할 정도로 코드 자체가 복잡한 코드 부분에 대해서는 주석 형식으로 특수 지식을 추가하십시오. 이러한 경우에 좋은 의견은 미래의 프로그래머에게 무엇을 동일하게 유지해야 하는지를 알려주는 것입니다.
[1] 이것은 주석 문제를 넘어서지 만 가져올만한 가치가 있습니다. 장래에 코드가 어떻게 변경 될 수 있는지에 대해 매우 분명한 아이디어가 있다면 주석을 만드는 것 이상으로 생각하고 매개 변수를 포함시켜야합니다. 주석을 사용하여 알 수없는 미래의 사람을 올바른 방향으로 조종하는 것보다 코드의 미래 버전의 안정성을 보장하는 거의 항상보다 신뢰할 수있는 방법이기 때문에 코드 자체 내에서. 동시에 인간은 미래를 예측하는 데 악명이 높고 프로그램 변경의 미래를 포함하기 때문에 지나치게 일반화하는 것을 피하고 싶습니다. 따라서 모든 수준의 프로그램 설계에서 합리적이고 잘 입증 된 미래의 차원을 정의하고 포착하려고 노력하십시오.