15

私は C# アプリのスケルトンを構築しており、実装せずに一連のメソッドを残すつもりです - ダミー値を返します。私はそれらに戻るつもりですが、それらの実装をうっかり忘れたくはありません。

実装されていないメソッドに到達したときに通知し、ダミー値で実行を継続したいと思います。

これを行う慣用的な方法は何ですか?

4

5 に答える 5

28

これを行う古典的な方法は次のようになります。

throw new NotImplementedException();

これは発信者にとって明確であり、後で修正するために簡単に見つけることができます (実際、いくつかのタスク リストに自動的に表示されます)。ただし、それがオプションでない場合は、おそらく次のようになります。

return 0; // TODO

繰り返しますが、これはタスク リストに自動的に表示され、簡単に見つかります。

より明白なものが必要な場合:

[Obsolete("not implemented")]
public int Foo() {
    return 0;
}

callerでコンパイラの警告として表示されるか、または:

public int Foo() {
    #warning Foo not implemented
    return 0;
}

これは、メソッドでコンパイラの警告として表示されます。

于 2012-08-15T07:27:45.483 に答える
3

伝統的には、スタブに対して をスローしますNotImplementedExceptionが、これはもちろん、そのパスの実行を終了します。その他のオプションは次のとおりです。

ログを記録するだけです。ログまたはコンソール出力に 1 行追加します。

または、ポップアップがどれだけ煩わしいかによって、Debug.Assert/を使用Debug.Failして、これらのメソッドがヒットしたときにメッセージをポップすることができます。

于 2012-08-15T07:26:33.407 に答える
1

TODO を使用することもできます。これは、Visual Studio のタスク リストに表示されます。

//TODO: Finish this method
public int dummy()
{
return 0;
}

そうでなければ

throw new NotImplementedException()
于 2012-08-15T07:29:51.763 に答える
0

おそらく、実装なしで各メソッドに NotImplementedException をスローすることによってですか?

値を返すには、おそらくモック フレームワークを使用できます

于 2012-08-15T07:26:13.300 に答える
0

実行を継続できるようにしたいのでTODO:、メソッドに戻り値の型がある場合は、 a を使用してデフォルト値を返します。

単体テストが失敗する原因となる値である限り、デフォルト値は問題ありませんが、特に Resharper を使用している場合は、TODO がタスク リストにかなり表示されます。

于 2012-08-15T07:38:40.460 に答える