コードのセクションにコメントを追加するかどうかを考えるときに私が自問したい質問があります:次の人がコードの全体的な意図をよりよく理解し、更新、修正、またはより速く、より確実に拡張しますか?
この質問に対する正しい答えは、コードのその時点で追加できるものはほとんどないということです。これは、意図をできるだけ明確にする名前と規則を既に選択しているためです。つまり、堅実な自己文書化コードを作成し、そこにコメントを挿入すると、役に立つよりも多くを損なう可能性が高いことを意味します。(冗長なコメントは、時間の経過とともに実際のコードとの同期が遅くなり、実際の意図を解読しにくくすることで、時間の経過とともにコードの信頼性を実際に損なう可能性があることに注意してください。
ただし、ほとんどすべてのプログラムおよびプログラミング言語では、元のプログラマー(ユーザー)によって行われた特定の重要な概念と決定がコードに現れなくなるポイントに遭遇します。優れたプログラマーは常に将来のためにプログラムするので、これはかなり避けられません-つまり、プログラムを一度だけ動作させるだけでなく、その多くの将来の修正、バージョン、拡張、修正、移植をすべて行い、誰が何をすべきかを知っているためですまた、正常に動作します。後者の一連の目標は非常に難しく、うまくいくためにはもっと多くの思考が必要です。つまり、何を言って上-機能のより集中しているほとんどのコンピュータ言語でうまく表現することも非常に難しいです、これを プログラムのバージョンは、満足のいくものにするために、今すぐ行う必要があります。
ここに私が言っていることの簡単な例を示します。ほとんどの言語では、小さなデータ構造の迅速なインライン検索には十分な複雑さがあり、初めてそれを見る人は、それが何であるかをすぐには認識しないでしょう。これは良いコメントの機会です。なぜなら、コードの意図について何かを追加することができ、後の読者が詳細を解読するのに役立つとすぐに感謝するでしょう。
逆に、ロジックベースの言語Prologのような言語では、小さなリストの検索を発現することを信じられないほどつまらないと簡潔できる任意の追加かもしれないコメントだけでノイズだろう。したがって、適切なコメントは必ずコンテキストに依存します。これには、使用している言語の長さやプログラム全体のコンテキストなどの要因が含まれます。
一番下の行はこれです:未来を考えてください。プログラムが将来どのように理解され修正されるべきかについて、あなたにとって重要かつ明白なことを自問してください。[1]
本当に自己文書化されているコードの部分については、コメントはノイズを追加し、将来のバージョンの一貫性の問題を増やします。そこで追加しないでください。
ただし、いくつかのオプションから重要な決定を下したコードの部分、またはコード自体が目的があいまいになるほど複雑な部分については、コメントの形で特別な知識を追加してください。このような場合の良いコメントは、将来のプログラマーに、何を同じに保つ必要があるか、つまり、不変のアサーションの概念であるが、何を変更してもよいかを知らせるものです。
[1]これはコメントの問題を超えていますが、提起する価値があります。コードが将来どのように変更されるかについて非常に明確な考えを持っていることがわかった場合は、コメントを作成してそれらのパラメーターを埋め込むだけでなく、おそらく考えるべきですコード自体の中で、コメントを使用して未知の未来の人を正しい方向に導くよりも、コードの将来のバージョンの信頼性を確保するためのほとんどの場合、それはより信頼できる方法です。同時に、人間は未来を予測することで悪名が高く、これにはプログラム変更の未来が含まれるため、一般化を避けることも必要です。そのため、プログラム設計のすべてのレベルで、将来の合理的で実証済みの側面を定義してキャプチャしようとしますが、