68

C# では#warningand#errorディレクティブを使用します。

#warning This is dirty code...
#error Fix this before everything explodes!

このようにして、コンパイラは、まだやるべきことがあるということを知らせてくれます。忘れないようにコードにマークを付けるためにどのような手法を使用していますか?

4

23 に答える 23

94

// TODO// HACKまたは Visual Studio のタスク ペインに表示されるその他のコメント トークンでそれらをマークします。

タスク リストを使用するを参照してください。

于 2008-12-02T20:44:18.387 に答える
28

藤堂コメントも。

また、特別なキーワード NOCHECKIN を追加しました。ソース管理システムにコミット フックを追加しました (少なくとも cvs または svn で行うのは非常に簡単です)。ここで、すべてのファイルをスキャンし、見つかった場合はファイルのチェックインを拒否します。テキスト NOCHECKIN はどこにもありません。

これは、何かをテストしたいだけで、誤ってチェックインされないようにする場合に非常に便利です (ソース管理にコミットされているすべてのものの差分中に注意深い目を通過しました)。

于 2008-12-02T20:48:43.793 に答える
15

//TODO: //HACK:私は自分の方法でのとの組み合わせを使用して、throw new NotImplementedException();行われなかった作業を示します。また、不完全な行に Visual Studio でブックマークを追加します。

于 2008-12-02T20:48:49.017 に答える
10

//TODO: 人の名前 - 修正してください。

これは Java です。次に、このタグへのすべての参照を見つける Eclipse のタスクを見て、TODO を他の人に割り当てることができるように、または自分のものだけを見ることができるように、それらをグループ化することができます。

于 2008-12-02T20:46:06.137 に答える
7

変更の途中ですべてをドロップする必要がある場合は、

#error finish this

後で行う必要がある場合は、バグ トラッカー (すべてのタスクに使用されます) に入ります。

于 2008-12-02T20:48:32.140 に答える
6

'to do' コメントは理論的には優れていますが、少なくとも私の経験では、実際にはあまり良くありません。あなたがそれらを必要とするのに十分長い間引き離されるつもりなら、それらは忘れられる傾向があります.

私は Jon T の一般的な戦略を好みますが、通常は単純に一時的にコードを壊すことでそれを行います - 私はよく意図的に未定義のメソッド参照を挿入し、何に戻る必要があるかをコンパイラに思い出させます:

PutTheUpdateCodeHere();
于 2008-12-02T20:48:32.997 に答える
6

私がとても気に入っているアプローチは、ここで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;
}
于 2008-12-02T20:53:23.267 に答える
5

無効な状態でテストを追加します。それらはすべてのビルド レポートに表示されます。

それでもうまくいかない場合は、バグを報告します。

特に、TODO コメントの量が意味のある方法で減少するのを見たことがありません。コメントを書いたときにそれをする時間がなかったとしたら、後で時間ができる理由がわかりません。

于 2008-12-02T20:46:34.763 に答える
4
//TODO: Finish this

VSを使用する場合は、[ツール]>[オプション]>[環境]>[タスクリスト]で独自のタスクタグを設定できます。

于 2008-12-02T23:09:20.483 に答える
3

私は 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");
 }
于 2010-06-22T04:58:00.453 に答える
3

これは完璧な世界ではありません。また、コードをリファクタリングしたり熟考したりする時間が常に無限にあるとは限りません。

//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
于 2010-06-22T05:07:33.333 に答える
3

gvim は "// XXX" と "// TODO" の両方を黄色で強調表示します。これは、私が最初にそのようにコードをマークして、それに戻ることを思い出させたとき、私を驚かせました。

于 2008-12-02T20:48:03.230 に答える
2

// TODO: または // HACK: を使用して、何かが未完成であることを思い出させ、その理由を説明するメモを付けます。私はしばしば(「めったに」と読みます)、時間の制約のために戻ってそれらのことを終わらせます。しかし、コードに目を通すと、何が未完成のままだったのか、さらに重要なことにその理由が記録されています。

1 日または 1 週間の終わりによく使うもう 1 つのコメント:

// ここからスタート クリス

^^^^^^^^^^^^^^^^^^^^ 月曜日の朝のブートストラップ時間を最小限にできるように、中断した場所を教えてくれます。

于 2008-12-02T21:27:00.033 に答える
2

//FIXME: xxx は壊れたコードに使用し、//CHGME: xxx は注意が必要だが機能するコード (おそらく限られたコンテキストでのみ) に使用します。

于 2008-12-03T05:45:37.297 に答える
1

これらは、対処する必要があるものにフラグを立てるのに役立つとわかった 3 つの異なる方法です。

  1. 確認する必要があるコードの横にコメント フラグを配置します。ほとんどのコンパイラは、一般的なフラグを認識し、それらを整理して表示できます。通常、IDE には、これらのフラグ専用に設計されたウォッチ ウィンドウがあります。最も一般的なコメント フラグは次のとおりです。 //TODO 使用方法は次のとおりです。

    //TODO: リリース前に修正してください。これは、まだ作成されていないメモリを使用しているため、アクセス違反が発生します。

  2. リリース前に対処する必要があるものにフラグを付ける 1 つの方法は、役に立たない変数を作成することです。ほとんどのコンパイラは、使用されていない変数がある場合に警告します。この手法を使用する方法は次のとおりです。

    int This_Is_An_Access_Violation = 0;

  3. IDE ブックマーク。ほとんどの製品には、後で参照できるようにコードにブックマークを配置する方法が付属しています。これは良いアイデアですが、自分だけが見ることができます。コードを共有しても、ほとんどの IDE はブックマークを共有しません。IDE のヘルプ ファイル システムをチェックして、ブックマーク機能の使用方法を確認できます。

于 2008-12-03T15:07:20.533 に答える
1
// TODO: <explanation>

それが私が実装していないものであり、忘れたくない場合。

// FIXME: <explanation>

それが正しく機能していないと思われるものであり、後で戻ってきたり、他の人に見てもらいたい場合.

#error/#warning オプションについて考えたことはありません。それらも重宝します。

于 2008-12-02T21:38:30.120 に答える
1

TODO: コメントも使用します。それらが実際に修正されることはめったになく、バグとして報告された方がよいという批判を理解しています。ただし、次の点が欠けていると思います。

  • 私は、頻繁にリファクタリングや再設計を行っている大規模な開発中に最もよく使用します。だから私はいつも彼らを見ています。そのような状況では、それらのほとんどは実際に対処されます。さらに、TODO を検索するのは簡単です。何も見逃していないことを確認するためです。

  • あなたのコードを読んでいる人にとって、不適切に書かれている、または一緒にハッキングされていると思われる箇所を知ることは非常に役立ちます。なじみのないコードを読んでいる場合、組織のパターン、命名規則、一貫したロジックなどを探す傾向があります。便宜上、その一貫性を1、2回破る必要がある場合は、その趣旨のメモを見たいと思います。そうすれば、何もないロジックを見つけようとして時間を無駄にすることはありません。

于 2009-01-07T18:12:09.940 に答える
1

長期的な技術的負債の場合は、次のようにコメントできます。

// 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 がそれを行うと思います。

于 2010-06-22T04:44:37.850 に答える
1

藤堂コメント。

于 2008-12-02T20:44:36.717 に答える
0

ほとんどのプログラマーがここで行うように、私は TODO コメントを使用します。さらに、Eclipse のタスク インターフェイスMylynを使用します。タスクがアクティブになると、Mylyn は私が開いたすべてのリソースを覚えています。こうすれば追跡できる

  1. ファイルのどこで何か (そして何を) しなければならないか、
  2. どのファイルでそれをしなければならないか、そして
  3. それらがどのタスクに関連しているか。
于 2009-02-10T14:04:58.687 に答える