私は、コード検証メソッドの引数のどこで、どのくらいの頻度で、疑問に思っています。
以下のクラスの例 (.dll ライブラリ) では、どの方法が最適だと思いますか? 一部のオブジェクトができないことを検証したいとしますnull(ただし、メソッドを適切に実行するために必要な他の検証である可能性があります)。ポイント1.で一度だけチェックする方が良いですか?ユーザーが利用できるパブリックメソッドで、後で「自分を信頼する」ことで、他のプライベートメソッドではnullにならないか、少し偏執的になり、毎回チェックすることをお勧めします使用される時間 (ポイント 2. 3. および 4.)  
オブジェクトを使用する直前に (ポイント 2、3、4 で) チェックすることで、これらのプライベート メソッドを使用してクラス内の何かを変更し、有効なオブジェクトを渡すことを「忘れる」ことにした場合に、将来保護されます。また、将来新しいパブリック メソッドを追加する場合、検証について覚えておく必要はありません。一方、同じ条件を何度もチェックしています。または、他の提案がありますか?
public class MyClass()
{
    public MyClass()
    {
    }
    public void ProcessObject(SomeObject obj)
    {
        //1. if (obj == null) throw new ArgumentException("You must provide valid object.");
        DoSomething(obj);
        DoMore(obj);
        DoSomethingElse(obj);
    }
    private void DoSomething(SomeObject obj)
    {
        //2. if (obj == null) throw new ArgumenException("You must provide valid object.");
        //do something with obj...
    }
    private void DoMore(SomeObject obj)
    {
        //3. if (obj == null) throw new ArgumentException("You must provide valid object.");
        //do something with obj...
    }
    private void DoSomethingElse(SomeObject obj)
    {
        //4. if (obj == null) throw new ArgumentException("You must provide valid object.");
        //do something with obj..
    }
}