C# では#warning
and#error
ディレクティブを使用します。
#warning This is dirty code...
#error Fix this before everything explodes!
このようにして、コンパイラは、まだやるべきことがあるということを知らせてくれます。忘れないようにコードにマークを付けるためにどのような手法を使用していますか?
// TODO
、// HACK
または Visual Studio のタスク ペインに表示されるその他のコメント トークンでそれらをマークします。
タスク リストを使用するを参照してください。
藤堂コメントも。
また、特別なキーワード NOCHECKIN を追加しました。ソース管理システムにコミット フックを追加しました (少なくとも cvs または svn で行うのは非常に簡単です)。ここで、すべてのファイルをスキャンし、見つかった場合はファイルのチェックインを拒否します。テキスト NOCHECKIN はどこにもありません。
これは、何かをテストしたいだけで、誤ってチェックインされないようにする場合に非常に便利です (ソース管理にコミットされているすべてのものの差分中に注意深い目を通過しました)。
//TODO:
//HACK:
私は自分の方法でのとの組み合わせを使用して、throw new NotImplementedException();
行われなかった作業を示します。また、不完全な行に Visual Studio でブックマークを追加します。
//TODO: 人の名前 - 修正してください。
これは Java です。次に、このタグへのすべての参照を見つける Eclipse のタスクを見て、TODO を他の人に割り当てることができるように、または自分のものだけを見ることができるように、それらをグループ化することができます。
変更の途中ですべてをドロップする必要がある場合は、
#error finish this
後で行う必要がある場合は、バグ トラッカー (すべてのタスクに使用されます) に入ります。
'to do' コメントは理論的には優れていますが、少なくとも私の経験では、実際にはあまり良くありません。あなたがそれらを必要とするのに十分長い間引き離されるつもりなら、それらは忘れられる傾向があります.
私は Jon T の一般的な戦略を好みますが、通常は単純に一時的にコードを壊すことでそれを行います - 私はよく意図的に未定義のメソッド参照を挿入し、何に戻る必要があるかをコンパイラに思い出させます:
PutTheUpdateCodeHere();
私がとても気に入っているアプローチは、ここでOren Eini によって示されている「Hack Bombing」です。
try
{
//do stuff
return true;
}
catch // no idea how to prevent an exception here at the moment, this make it work for now...
{
if (DateTime.Today > new DateTime(2007, 2, 7))
throw new InvalidOperationException("fix me already!! no catching exceptions like this!");
return false;
}
無効な状態でテストを追加します。それらはすべてのビルド レポートに表示されます。
それでもうまくいかない場合は、バグを報告します。
特に、TODO コメントの量が意味のある方法で減少するのを見たことがありません。コメントを書いたときにそれをする時間がなかったとしたら、後で時間ができる理由がわかりません。
//TODO: Finish this
VSを使用する場合は、[ツール]>[オプション]>[環境]>[タスクリスト]で独自のタスクタグを設定できます。
私は C++ プログラマーですが、私の手法は C# やその他の言語で簡単に実装できると思います。
ToDo(msg)
コンストラクターがログ メッセージを出力するローカル スコープで静的オブジェクトを構築するように展開するマクロがあります。そうすれば、未完成のコードを初めて実行するときに、ログ出力にリマインダーが表示され、タスクを延期できないことがわかります。
次のようになります。
class ToDo_helper
{
public:
ToDo_helper(const std::string& msg, const char* file, int line)
{
std::string header(79, '*');
Log(LOG_WARNING) << header << '\n'
<< " TO DO:\n"
<< " Task: " << msg << '\n'
<< " File: " << file << '\n'
<< " Line: " << line << '\n'
<< header;
}
};
#define TODO_HELPER_2(X, file, line) \
static Error::ToDo_helper tdh##line(X, file, line)
#define TODO_HELPER_1(X, file, line) TODO_HELPER_2(X, file, line)
#define ToDo(X) TODO_HELPER_1(X, __FILE__, __LINE__)
...そして、次のように使用します。
void some_unfinished_business() {
ToDo("Take care of unfinished business");
}
これは完璧な世界ではありません。また、コードをリファクタリングしたり熟考したりする時間が常に無限にあるとは限りません。
//REVIEW
後で戻ってきたい場合は、コードを入れることもあります。つまり、コードは機能していますが、それが最善の方法であると確信していない可能性があります。
// REVIEW - RP - Is this the best way to achieve x? Could we use algorithm y?
同じことが言えます//REFACTOR
// REFACTOR - should pull this method up and remove near-dupe code in XYZ.cs
gvim は "// XXX" と "// TODO" の両方を黄色で強調表示します。これは、私が最初にそのようにコードをマークして、それに戻ることを思い出させたとき、私を驚かせました。
// TODO: または // HACK: を使用して、何かが未完成であることを思い出させ、その理由を説明するメモを付けます。私はしばしば(「めったに」と読みます)、時間の制約のために戻ってそれらのことを終わらせます。しかし、コードに目を通すと、何が未完成のままだったのか、さらに重要なことにその理由が記録されています。
1 日または 1 週間の終わりによく使うもう 1 つのコメント:
// ここからスタート クリス
^^^^^^^^^^^^^^^^^^^^ 月曜日の朝のブートストラップ時間を最小限にできるように、中断した場所を教えてくれます。
//FIXME: xxx は壊れたコードに使用し、//CHGME: xxx は注意が必要だが機能するコード (おそらく限られたコンテキストでのみ) に使用します。
これらは、対処する必要があるものにフラグを立てるのに役立つとわかった 3 つの異なる方法です。
確認する必要があるコードの横にコメント フラグを配置します。ほとんどのコンパイラは、一般的なフラグを認識し、それらを整理して表示できます。通常、IDE には、これらのフラグ専用に設計されたウォッチ ウィンドウがあります。最も一般的なコメント フラグは次のとおりです。 //TODO 使用方法は次のとおりです。
//TODO: リリース前に修正してください。これは、まだ作成されていないメモリを使用しているため、アクセス違反が発生します。
リリース前に対処する必要があるものにフラグを付ける 1 つの方法は、役に立たない変数を作成することです。ほとんどのコンパイラは、使用されていない変数がある場合に警告します。この手法を使用する方法は次のとおりです。
int This_Is_An_Access_Violation = 0;
IDE ブックマーク。ほとんどの製品には、後で参照できるようにコードにブックマークを配置する方法が付属しています。これは良いアイデアですが、自分だけが見ることができます。コードを共有しても、ほとんどの IDE はブックマークを共有しません。IDE のヘルプ ファイル システムをチェックして、ブックマーク機能の使用方法を確認できます。
// TODO: <explanation>
それが私が実装していないものであり、忘れたくない場合。
// FIXME: <explanation>
それが正しく機能していないと思われるものであり、後で戻ってきたり、他の人に見てもらいたい場合.
#error/#warning オプションについて考えたことはありません。それらも重宝します。
TODO: コメントも使用します。それらが実際に修正されることはめったになく、バグとして報告された方がよいという批判を理解しています。ただし、次の点が欠けていると思います。
私は、頻繁にリファクタリングや再設計を行っている大規模な開発中に最もよく使用します。だから私はいつも彼らを見ています。そのような状況では、それらのほとんどは実際に対処されます。さらに、TODO を検索するのは簡単です。何も見逃していないことを確認するためです。
あなたのコードを読んでいる人にとって、不適切に書かれている、または一緒にハッキングされていると思われる箇所を知ることは非常に役立ちます。なじみのないコードを読んでいる場合、組織のパターン、命名規則、一貫したロジックなどを探す傾向があります。便宜上、その一貫性を1、2回破る必要がある場合は、その趣旨のメモを見たいと思います。そうすれば、何もないロジックを見つけようとして時間を無駄にすることはありません。
長期的な技術的負債の場合は、次のようにコメントできます。
// TODO: This code loan causes an annual interest rate of 7.5% developer/hour. Upfront fee as stated by the current implementation. This contract is subject of prior authorization from the DCB (Developer's Code Bank), and tariff may change without warning.
...エラー。単にそれらを無視しない限り、TODO がそれを行うと思います。
藤堂コメント。
ほとんどのプログラマーがここで行うように、私は TODO コメントを使用します。さらに、Eclipse のタスク インターフェイスMylynを使用します。タスクがアクティブになると、Mylyn は私が開いたすべてのリソースを覚えています。こうすれば追跡できる