2
モジュール全体の使用状況を検証する必要があるのか、それともパブリックメソッドの引数だけを検証する必要があるのか?
パブリックメソッドの引数を検証することをお勧めします。 彼がnullを期待していない場合、nullをチェックする必要がありますか? メソッドはパラメータを検証する必要がありますか? MSDN-CA1062:パブリックメソッドの引数を検証します(.NETの背景がありますが、質問はC#固有ではありません) 動機は理解できます。モジュールが誤った方法で使用される場合は、予測できない動作ではなく、すぐに例外をスローする必要があります。 気になるのは、モジュールの使用中に発生する可能性のあるエラーは間違った引数だけではないということです。推奨事項に従ってエラーのエスカレーションを望まない場合に、チェックロジックを追加する必要があるいくつかのエラーシナリオを以下に示します。 着信-予期しない引数 着信-モジュールの状態が間違っています 外部呼び出し-予期しない結果が返されました 外部呼び出し-予期しない副作用(呼び出しモジュールへの二重入力、他の依存関係の状態を壊す) 私はこれらすべての条件を考慮して、1つのメソッド(申し訳ありませんが、C#ではありません)で単純なモジュールを作成しようとしました: public sealed class Room { private readonly IDoorFactory _doorFactory; private bool _entered; private IDoor _door; public Room(IDoorFactory doorFactory) { if (doorFactory == null) throw new ArgumentNullException("doorFactory"); _doorFactory = doorFactory; } public void Open() { if (_door != null) throw …