コメント作成とドキュメントのベストプラクティス


20

最近のコメントはこれまで以上に簡単です。Javaには、コメントをクラスにリンクするための優れた手法がいくつかあり、Java IDEはコメントシェルの作成に適しています。Clojureなどの言語では、関数のコード自体に関数の説明を引数として追加することもできます。

しかし、私たちは今でも良い開発者によって書かれた時代遅れのコメントや劣悪なコメントが頻繁にある時代に生きています。

特にここではJava / Clojure / Pythonに興味がありますが、回答は言語固有である必要はありません。

コメントを検証し、「薄っぺらな」コメント(マジックナンバー、不完全な文などのコメントなど)または不正なコメント(スペルミスなどの検出など)を自動的に検出する新しい手法はありますか。

そしてもっと重要なことは、「コメント政策」や戦略が受け入れられているということですか?コーディング方法に関するアドバイスはたくさんありますが、「コメントの方法」についてはどうでしょうか。

回答:


40
  • 名前/ドキュメントには、あなたがをしているが記載されているはずです。

  • 実装はあなたがそれをどのように行っているを教えてくれるはずです。

  • コメントは、なぜあなたがそれをあなたがする方法でするかをあなたに伝えるべきです。


6
また、コメントは、あなたが別の方法でそれをしていない理由、すなわち重要な設計上の選択を教えてくれるはずです。

2
私はあなたが何をしているのかというコメントが何度もあるべきだと思います。「なぜ」コメントのみというこの考えは、私の意見ではアンチパターンです。すべてのコードを一目で理解できるほど明確に書くことができるというのは神話であり、私の経験では、きれいなコードを書くことをしないと思うほとんどのプログラマーです。「この関数のコードを読むだけでその機能を確認できるので、この関数に説明的な名前を付ける必要はありません」と言っているのと同じです。-それも意味がありませんか?
ダリン

2
コードが何をしているのか明確でない場合は@dallin。リファクタリングを検討してください。それ以外の場合は、なぜそのように実装されているのかを説明するコメントを追加します(偶然にも、より良い方法を説明します)。説明的な名前との比較はリンゴ/オレンジであり、説明的な名前は関数が使用されている場所を明確にし、関数のソースコードにアクセスできない場合があります。
ラチェットフリーク

@dallin:「プログラマーが一目で理解できるように、すべてのコードを十分に明確に書くことができるという神話です」と、ボブおじさんはあなたに話をしたいと思うでしょう。-「誰でも関数のコードを読んでその機能を確認できるので、この関数に説明的な名前を付ける必要はありません。」変数やメソッドにわかりやすい名前を付けることは、プログラマーがコードを明確にする方法ですやっています!
klaar

14

これは議論の余地があるかもしれませんが、私のアドバイスは可能な限りFEWコメントとして書くことです。代わりに、わかりやすくわかりやすいクラス名、変数名、メソッド名を使用してください。できる限り明確な方法でコードを記述してください。そして、これがコードの最も重要な属性であると考えてください(要件を満たしていることを除く)。可能な限り明確なメソッドを作成し、さらに説明が必要だと思う場合にのみ、コメントを書いてください。

そして、誰かがクラスを変更するときはいつでも、コメントがすべて正しいことを確認しなければならないという組織的な慣習があります。


1
これは良い出発点ですが、OPの質問を満たすには、自動検証に関する彼の実際の懸念に対処する何かを書く必要があると思います。
ロバートハーヴェイ

2
+1-また、コメントはコードが記述された理由を説明するためにのみ使用されるべきだと思います。何をするのかif (a == b) then c();は知っていますが、なぜそれを行うのわからない場合は、コメントを使用する必要があります:)
デコ

デコ-私は完全に同意します。特定のメソッドがプロセス全体にどのように適合するかを理解したい場合、コメントは役に立ちます。言い換えれば、なぜこのメソッドを呼び出すのか、それが何をするのかということです。
ダウッドは、モニカを

記述されたコードを明確にするだけでなく、TODOコメントを使用して(コードレベルの)アイデア、考えなどを確実に保持する必要があります。たとえば、関数/クラスが現在のデータサイズを適切に処理できるが、2年後に負荷を処理できない可能性がある場合、TODOコメントを使用してそこに観測値を書き込むようにしてください。将来の開発者はあなたの努力に感謝します。これらのことを別のtxt / wordドキュメントに書き留めないでください。コードを記述している間、誰もそのようなドキュメントを参照しません。
TechCoze


5

他の言語についてはわかりませんが、pythonを使用すると、自己検証コメントの形式であるdoctestを作成できます。もちろん、実際の単体テストの代わりに使用するべきではありませんが、特定の機能を文書化するための迅速かつ簡単な方法であり、本来あるべきほど明白ではありません。コメントテストを実行して、コメントがまだ正しいこと(少なくともテストを含むコメントの部分)を検証できるという利点があります。


1
また、Sphinxはコードをドキュメントと比較して、カバレッジメトリックを提供します。
S.Lott

3

コードコメントを使用してドキュメントを自動生成する方法を見つける最も信頼できる場所の1つは、確実にdoxygenです。そのようなツールはもっとたくさんありますが。

これは、ドキュメントを自動的に生成するために従うべきコメント作成の標準を定義します。ただし、これは構造の詳細を提供しますが、意味的には検証しません。たとえば、関数の目的を説明するために誤解を招く英語を使用したかどうかを確認できません!

これはコメントを構造化するのに最適なものですが、個人的には、コード自体をより保守しやすくするために、より多くのドキュメントが必要だと感じています。しばらく前にP.SEに質問がありました。コードはオープンソース開発者ツールのドキュメントになりますか?どれくらいの頻度ですか?もちろん、これは非オープンソースプロジェクトにも当てはまります。

コードをよりメンテナンスしやすくするために、コードを処理する方法の構造を作成するのに役立つ外部ドキュメントが存在することが実際に重要であり、コード内のコメントは表示を制限する必要があります

コメント作成のポリシーを定義する場合は、コーディング標準に含まれる全体的なアプローチとして含める必要があると思います。これを参照してください:開発チームにソフトウェアを生成するスタイルガイドとドキュメントを導入する際の落とし穴は何ですか?

通常、コメントはコードの5%未満を構成します。そして実際には、コードレビュー自体が(開発の他の側面よりも)あまり注目を集めていない一方で、コメントもレビューされることは実際上困難です。


1
ここで最後の文に同意しません。契約を終えたばかりで、非常に詳細なレビューを行ったチームリーダーの下で働いています。彼のレビューには常にコメントが含まれていました-言葉の言い方、変数名が正しいかどうか、将来の開発者が知りたい情報がすべて含まれているかどうか。やがて、私は彼が各コメントで何を期待しているのかを知り、彼の基準に合ったコメントを作成することができました。そのため、コードレビューを行い、コードレビューにコメントを含めることが組織のポリシーであれば、それは起こります。
ダウードはモニカ回復言う

これは通常、私が書く唯一の種類のコメントです。特に、何が入って何が出てくるかを文書化する方法については(私は緩やかに型付けされた言語で作業します)。
ダンマン14

2

コメントを検証し、「薄っぺらな」コメント(マジックナンバー、不完全な文などのコメントなど)または不正なコメント(スペルミスなどの検出など)を自動的に検出する新しい手法はありますか。

よく知られた手法があります-「コードレビュー」と呼ばれ、「ペアプログラミング」という名前の姉妹がいます。ここで「自動的に」何かを期待しないでください。

そしてもっと重要なのは、「コメント政策」や戦略が受け入れられているということですか?コーディング方法についてはたくさんのアドバイスがありますが、「コメント方法」についてはどうでしょうか。

「完全なコード」には、コーディング方法に関するすべてだけでなく、「コメント方法」、特に自己文書化コードの記述方法に関する章も含まれています。


コード完了の場合は+1。Robert MartinによるClean Codeには、有用な賞賛の書き方に関する良い章もあります。Javaの世界についてはわかりませんが、.NETの世界には、コメント内のコード要素への参照を「自動的に」検証できるResharperがあります:)
MattDavey

0

Javaに特化した1つのソースは、OracleのJavadocツールのドキュメントコメントの書き方です。

このドキュメントでは、Sun MicrosystemsのJava Softwareで作成されたJavaプログラムのドキュメントコメントで使用するスタイルガイド、タグ、および画像の規則について説明します。

そして、項目44:すべての露出API要素のための書き込みdocコメント

APIを使用可能にする場合は、文書化する必要があります。従来、APIドキュメントは手動で生成されていたため、コードとの同期を維持するのは面倒でした。Javaプログラミング環境では、Javadocユーティリティを使用してこのタスクを容易にします。Javadocは、特別にフォーマットされたドキュメントコメント(より一般的にはドキュメントコメント)を使用して、ソースコードからAPIドキュメントを自動的に生成します。

以下からの効果的なJavaの第2版

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.