私は C# アプリのスケルトンを構築しており、実装せずに一連のメソッドを残すつもりです - ダミー値を返します。私はそれらに戻るつもりですが、それらの実装をうっかり忘れたくはありません。
実装されていないメソッドに到達したときに通知し、ダミー値で実行を継続したいと思います。
これを行う慣用的な方法は何ですか?
これを行う古典的な方法は次のようになります。
throw new NotImplementedException();
これは発信者にとって明確であり、後で修正するために簡単に見つけることができます (実際、いくつかのタスク リストに自動的に表示されます)。ただし、それがオプションでない場合は、おそらく次のようになります。
return 0; // TODO
繰り返しますが、これはタスク リストに自動的に表示され、簡単に見つかります。
より明白なものが必要な場合:
[Obsolete("not implemented")]
public int Foo() {
return 0;
}
callerでコンパイラの警告として表示されるか、または:
public int Foo() {
#warning Foo not implemented
return 0;
}
これは、メソッドでコンパイラの警告として表示されます。
伝統的には、スタブに対して をスローしますNotImplementedException
が、これはもちろん、そのパスの実行を終了します。その他のオプションは次のとおりです。
ログを記録するだけです。ログまたはコンソール出力に 1 行追加します。
または、ポップアップがどれだけ煩わしいかによって、Debug.Assert
/を使用Debug.Fail
して、これらのメソッドがヒットしたときにメッセージをポップすることができます。
TODO を使用することもできます。これは、Visual Studio のタスク リストに表示されます。
//TODO: Finish this method
public int dummy()
{
return 0;
}
そうでなければ
throw new NotImplementedException()
おそらく、実装なしで各メソッドに NotImplementedException をスローすることによってですか?
値を返すには、おそらくモック フレームワークを使用できます
実行を継続できるようにしたいのでTODO:
、メソッドに戻り値の型がある場合は、 a を使用してデフォルト値を返します。
単体テストが失敗する原因となる値である限り、デフォルト値は問題ありませんが、特に Resharper を使用している場合は、TODO がタスク リストにかなり表示されます。