問題番号でコメントするのは良い習慣ですか?


18

jQueryコードのコメントから多くの問題番号を見ました。(実際、jQueryコードには69の問題番号がありました。)良い習慣になると思いますが、ガイドラインを見たことはありません。

それが良い方法である場合、この方法のガイドラインは何ですか?

回答:


22

一般的に、私はそれを良い習慣とは思わないでしょう。しかし、例外的な場合には、非常に便利です。つまり、複雑な問題を修正するためにコードが直感的でない何かをしなければならず、説明なしに誰かがこの奇妙なコードを「修正」してそれを破りたいというリスクがあります、理由を説明すると、問題からの情報を複製する巨大なコメントになります。


+1これはjQueryの問題のコメントの場合のようです。–ここにコメントがないと、非常に混乱します。
コンラッドルドルフ

1
私は、コードがサードパーティのコードの問題の回避策を扱っている場合にのみ、コードの問題に個人的に言及します。独自の課題追跡への参照は、コード内ではなくバージョン管理システムに属します。大きなコードベースでは、内部的な回避策にも同様の参照を使用するのが理にかなっています。
ミッコランタライネン

14

関連する修正をソース管理システムにコミットするときに、コミットメッセージに問題番号を追加するだけで十分だと思います。

例えば:

バグ#203:30秒後にデータベース接続がタイムアウトしなくなりました。

コードに変更が加えられた問題番号、開発者名、または日付を追加すると、コードベースが汚染されるだけで、ソース管理システムによって外部で実際に管理する必要があります。


あなたは正しいと思います。それでは、なぜjQueryコミッターはコメントに問題番号を付けると思いますか?多分それは人気のあるコードの特別なケースですか?
サンイリー

6
同意しません。コメントは、コード自体から明らかでない場合に、コードがそうである理由を説明するためにあります。バグは、コードの「理由」の優れたコンテキストを提供できるため、バグへのリンクは、バグを理解するのに非常に役立ちます。そうは言っても、ソース管理ログのバグチケットへのリンク気に入っていますが、それは別の目的を果たします。
ジェロエン

両方を行う必要があると思いますが、これらのコメントをソースコード管理に追加するだけでは不十分だと思います。あなたがそれらを探しに行かない限り、あなたはめったにそれらのコメントを見ることさえありません。これらの参照をより目立つようにすると、IMOに役立ちます。
ベンジャミンウートン

1
ジェロエン:私はあなたに再び同意しません。つまり、バグの修正が迅速でいハックである場合は、それについてコメントしてバグを参照する必要があります。修正が適切な修正である場合、実際にそれがそのままである理由を実際に説明する必要があります。理想的なケースでは、いかなる種類のコメントの理由もないはずであり、ソース管理のバグへの参照で十分です。修正が自明でない場合は、リファクタリングを検討する必要があります。
-martiert

バグではなく実装である場合、コメントは表示されません。どうして?コードの進化は正常であり、予想されるため、機能の実装は、問題を修正するためのオリジナルとの顕著な違いを迅速に見つけるのに役立つバグ修正とは異なり、状況が特にない限り、タスクIDを参照しません。そうしないと、コードを見ているプログラマは、コードの残りの部分とは異なる方法でそれが行われた理由を理解しようとして1時間頭を痛める可能性があります(最悪のシナリオでは元に戻す可能性があります)。
ニール

7

ここの他のポスターにはまったく同意しません!

追跡参照を使用したコードコメントは、メンテナンスプログラミングに非常に役立ちます。

バグを追跡してコードの領域に近づいている場合、最近変更されたことがわかり、変更のコンテキストへのリンクを持っていることは神からの送信です。

はい、ソースコードを管理できますが、ファイルとモジュールを個別にチェックするのは非常に遅くなります。あなたは欲しいこれらの事は、最近の変更のためにあなたに飛び出すします。

コードベースで本当に古いものを見るので、おそらくそれらを非推奨にするでしょうが、それらを賢く使用する場合、より新しいものを保持し、開発者の時間を大幅に節約することにマイナス面はほとんどありません。

実際、バグ追跡システムへのこれらの小さな参照は、コード内の詳細なコメントよりも望ましいと思います。


2
使用する価値のあるソース/バージョンコードシステムを使用する場合、バージョン管理システムは、コードのすべての行に、それを変更したリビジョンを追加できます。たとえば、git gui blame <filename>gitを使用すると、デフォルトではコード履歴を参照するための非常に高速なGUIが提供されます。ツールを使用してコードコメントと履歴を組み合わせると、インラインコメントよりもはるかに優れたコードのドキュメントを作成できます。つまり、わざわざ良いコミットメッセージを書く場合(良いコミットメッセージは、そのパッチを適用する理由を説明する電子メールメッセージとほぼ同じである必要があります)。
ミッコランタライネン

バグトラッカーを使用してゼロからプロジェクトを開始する場合、事実上すべてのコード行はユーザーストーリーまたはバグ修正からのものです。すべての行をコメントしますか?
ガブリエル大城

5

「クリーンコード」のポリシーをサブスクライブする場合は、コメントを追加するのが良い方法かどうかを自問する必要があるでしょう。コードをコメントでのみ明確にすることができる場合は、コメントを追加してください。そうしないと、コードを読むだけでコードが何をするのかを簡単に理解できるはずです(変数、メソッドなどに意味のある名前を使用している場合)。

コメントが良い習慣であるかどうかについてのあなたの個人的な見解に関係なく、コメントはコメントが参照しているコードにとって直接価値のある情報を含むべきです。この場合、問題は問題番号を追加するとコードに価値が追加されるかどうかです。問題番号を追加する際に発生する問題は、いくつかの問題を満たすために大幅に変更される可能性のあるコードのセクションがあり、しばらくすると、特定の問題に関連する変更を正しく識別することができない可能性があることです。たとえば、後続の問題では、以前の問題に関連するコードを大幅にリファクタリングする必要があります。これはおそらく極端な例ですが、コード内のコメントの問題番号がどのように役に立たないかを示しています。

私が今説明した状況が決して起こらないことを保証できるなら、私はまだ問題が何であるかについての説明なしに問題番号自体はまだかなり役に立たないと主張します、そしてまだ、この情報のすべては本当にあなたに属します問題追跡システムであり、複製する必要があります。問題番号をメモするより良い場所は、バージョン管理システム内のコミットコメントです。利点は、バージョンを比較して、特定の問題に関連するコードの変更を確認できることです。一方、コードの変更の理由を確認する場合は、問題番号自体が必要な識別子を提供します。

これらすべてを念頭に置いて、コード内のコメントに問題番号を追加することは、あまり良い方法ではないことをお勧めします。


4

コメント自体に短い説明を加えながら、さらに読むために問題を参照することは良い習慣だと思います。

通常、コメントを追加するのは、そのコードに微妙なものや直感的でないものがある場合のみです。いくつかの微妙な問題は数行で完全に説明することができず、コメントの数十行を追加したくないので、これが達成しようとしていることを説明する短いコメントを追加し、詳細。

例えば:

// Verify MAC before checking the padding, to avoid padding oracle attacks
// See issue 123 for details

問題123では、その攻撃がどのように見えるか、および新しいコードが攻撃に対して耐性がある理由について説明しています。

または:

// Using foo's algorithm here, since it fits out usage pattern best
// Check issue 345 for a discussion of possible algorithms, and why foo was chosen.

ソースに課題番号を入力する際の主な問題は、外部参照を入手できるようになったことです。そのため、問題が失われないことを確認する必要があります。


0

コミットメッセージに問題番号を含めることは、ソースコードが継続的インテグレーションに結び付けられている場合に非常に役立ちます。TeamCityのようなアプリケーションはその情報を引き出し、より良いレポートを可能にします。

上記で、私はそれがコードコメントから引き出されると100%確信していないと言いました。コードに課題番号を含めることは、課題番号が保持されている場合(例:課題トラッカーを変更しない場合)、特定のプロジェクトに多くの課題がない場合に適切に機能します。

次の開発者が問題番号を調べる必要がないように、問題と解決策を説明しておけば、おそらくより役立つでしょう。コンパイラまたはミニファイヤは、コードが野生にリリースされる前にコメントを削除するだけなので、最終結果に影響はありません。

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