クラスのドキュメントヘッダーに何を含める必要がありますか


13

エンティティ、ビジネスロジック、およびデータアクセスクラスの有益なクラスドキュメント形式を探しています。

ここから次の2つの形式が見つかりまし

フォーマット1

///-----------------------------------------------------------------
///   Namespace:      <Class Namespace>
///   Class:          <Class Name>
///   Description:    <Description>
///   Author:         <Author>                    Date: <DateTime>
///   Notes:          <Notes>
///   Revision History:
///   Name:           Date:        Description:
///-----------------------------------------------------------------

フォーマット2

// ===============================
// AUTHOR     :
// CREATE DATE     :
// PURPOSE     :
// SPECIAL NOTES:
// ===============================
// Change History:
//
//==================================

以下は基本的な要素だと思います

  • 著者
  • 作成日
  • 説明
  • 改訂履歴

とにかく名前空間とクラス名があるので。

あなたの考え、どの形式が推奨されているか、改訂履歴を書く標準的な方法があるかどうかを教えてください。


8
何らかの形のVCSを使用している場合の改訂履歴は、私の意見で大事にされています。ここに配置することにより、ドキュメント化する必要がある別の場所が追加されます。VCSに代わってコードドキュメントをできるだけ簡潔にしておいてください。
クリス

5
作成者と作成日もソース管理によって処理されます。必要なのは説明だけです。
マイクシーモア

回答:


26

あなたが提案した情報のほとんどは、ソースリポジトリにあります。

本当に必要なのは、目的のセクションだけです。このセクションには、クラスの目的が示されています。

他の情報を知りたいと思うたびにリポジトリを見るのは面倒でしょうか?私はノーと言います。原作者が誰であるかをどれくらいの頻度で気にしますか?または、ファイルが最初に作成されたとき?プラグイン(Visual StudioのAnkh SVNなど)を使用すると、現在のファイル内で右クリックしてファイルのリポジトリログを表示できるため、この情報を実際に見るのはそれほど面倒ではありません。

さらに、バージョン履歴をコメントに保存する場合、このコメントを維持する必要があります。だから、時間が経つにつれて、あなたに嘘をつく可能性があります。ソースコードリポジトリはこの履歴データを自動的に保持するため、そのメンテナンスは不要であり、正確です。


14

説明的なクラス、メソッド、および変数名を持ちます。これにより、目的や説明などのコメントが不要になります。メソッド名が短いほど良いと思うこともあります。それどころか、目的が明確に記述されている限り、必要なだけメソッド名を作成してください。絶対に不可欠なメモのみを持ち、特定の方法でコードを理解するのに役立ちます。コードを変更するとき、プログラマーはコメントの更新を忘れることがよくあります。コメントとコードが同期しなくなり、善よりも害を及ぼすことになります。

コメントなしのジェフアトウッドコーディングによるこの記事を読んでください


できれば、この回答に+100を投票します。
クリスホームズ

5

標準タグを使用してドキュメントを生成します。これ以上でもそれ以下でもありません。こちらをご覧ください

クラスに属さない情報は決して入れません。作成者、データ、リビジョンは、バージョン管理システムに保存するデータです。

提示された2つの形式は、ドキュメントの生成には役に立たず、コメントに最大の誤りがあり、改訂履歴をリストします。


3

この情報の多くはソース管理リポジトリによって追加でき、クラスのスコープと動作を正確に記述する必要があるのは説明だけです。例として、Java JDKのJavadocをいくつか見ることをお勧めします。


@karianna-したがって、クラスの説明以外はすべてソース管理リポジトリに残すことをお勧めします。しかし、毎回リポジトリログから表示するのは面倒です。また、ドキュメントファイル(.chmやsandcastleなど)を作成する場合はどうなりますか?
CoderHawk

@Sandyコードコメントヘッダーに特定のキーワードを入れて、ソース管理リポジトリがチェックインするたびに更新できるようにする必要があります。コーディングする言語と使用しているソース管理リポジトリによって異なります。何を使っていますか?:)
Martijn Verburg

@karianna-Subversionを使用しています。少しの技術/プログラミングについて議論しても、これが閉じられないことを願っています!:-)ログコメントを特定のクラスにマージする方法を尋ねる質問をSOに投稿する必要があるかどうかを教えてください。:-)
CoderHawk

$ Id:$と$ URL:$を使用できます。:は省略可能ですが、忘れてしまいます。うまくいけば、SOの君主は、私たちの冒涜のために私たちを殺すません
マルタインVerburg

3

そのリストのすべては不要です。ソース管理はほぼすべてを処理する必要があり、カバーしていないものは適切な命名規則によって処理されます。

クラスが何をしているのかを理解するために「説明」を読む必要がある場合、(a)名前の付け方が悪いか、(b)あまりにも多くの悪いクラスを書いた(SRP)のいずれかです。


2

他の人が指摘しているように、この情報の多くはリポジトリにあり、これまで私が探していた大きなフィールドは次のとおりです。

  • 説明 -コードによって行われていること。
  • -コード自体のコメントから簡単に導き出せないコードについて知っておく必要があるもの。
  • 参照 -コードが依存する参照は、使用includeまたは類似のステートメントを介して明確にされていません。

含めると便利な項目の1つは、キーワードのセクションです。関数、クラス、構造体などの名前を検索できる場合がありますが、ファイル内の他の名前では明確にならないキーワードもあります。または、古くて文書化が不十分なコードの場合、保守のためにコードを文書化する最初のステップになるかもしれません。


1

私がこれまで読んだ他の回答のほとんどは、常に利用可能なリポジトリが1つしかないことを前提としていました

ソースコードはリポジトリへの接続を失う可能性があるため(つまりコピーされる場合)、私のクラスのドキュメントは次のようになります。

  • class documentation header (=ファイルの先頭にあるコメントブロック)には、必要な法的情報のみが含まれています(gpl-licenceでのxyzによる著作権)
  • クラスを使用する開発者が知っておくべきことはすべて、class-java-doc-comments(または.netに相当するもの)に移動して、現代のide-sがこの情報をクラスを使用するソースコードのツールチップ情報として表示できるようにする必要があります

また、バグ修正または機能リクエストのチケット番号を追加して、クラスが作成された場所/時期/理由を知ることができます(幸運にも数年後でもチケットにアクセスできる場合)。

ビーイングが古いクローズドソースのレガシープログラムの問題を修正するように頼んだとき、コードの元の要件を理解するのに非常に貴重なチケット番号。

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