あなたのクラスで爆発を管理するために人々が(もしあれば)どのようなアプローチを取っていますか?例:リファクタリングガード欄
public void SomeMethod<T>(string var1, IEnumerable<T> items, int count)
{
if (string.IsNullOrEmpty(var1))
{
throw new ArgumentNullException("var1");
}
if (items == null)
{
throw new ArgumentNullException("items");
}
if (count < 1)
{
throw new ArgumentOutOfRangeException("count");
}
... etc ....
}
私が現在取り組んでいるプロジェクトでは、パブリックメソッドに類似のガード句セットを持つ多くのクラスがあります。
私は.NET 4.0コード契約を認識していますが、現時点ではこのオプションの選択肢ではありません。 、あなたはコードの契約をシミュレートすることができ、いくつかの方法があるがそれよりも
public void SomeMethod<T>(string var1, IEnumerable<T> items, int count)
{
if (string.IsNullOrEmpty(var1))
throw new ArgumentNullException("var1");
if (items == null)
throw new ArgumentNullException("items");
if (count < 1)
throw new ArgumentOutOfRangeException("count");
... etc ....
}
その他:
私は同じことを投稿していました。唯一の問題は、スタックトレースの先頭にこのメソッドを置きます。先頭のメソッドは大したことではありません。このパターンは明らかにさまざまな種類の値をチェックするためにさまざまな型に使用できます。 –
ええ、これは私がこれまで持っていた唯一の問題です。元の呼び出しメソッドを見つけるのは簡単ですが。 –
これはコード契約を模倣するクラスと本質的に同じです。 –