私はあなたがする必要があるのと同じくらい防御的だろう。少しあいまいですが、そう思いますが、説明しようと思います。
メソッドを修正するときに、そのメソッドに入力パラメーターがある場合、それらのパラメーターが何であるかを決定する必要があります。アプリケーション内の状況や場所では、これは異なります。たとえば、メソッドまたはコードがユーザー入力からデータを受け入れている場合、すべてのコードベースをカバーし、エラーメッセージまたは受け入れられないデータを表示する良い方法を介して入力を適宜処理します。
メソッドが公開されたAPIである場合。入ってくるものを制御することはできませんので、すべての側面をカバーし、それに応じてプログラムすることを期待する必要があります。
プロジェクトのコアエンジン内で生成されるメソッドについては、ここで決定する必要があります。到着するデータは事前にスクリーニングされ、到着前に検証されていると思いますか、それとも必要なチェックを入れるべきですか?これは、メソッドの概念レベルと、これがチェック可能な場所であるかどうかに依存すると思います。だから私が考えるかもしれないことは次のとおりです。
1)このチェックを行う必要があるのはこれだけですか?この変数は、この条件のためにさまざまな場所でチェックする必要がありますか?もしそうなら、チェーンの上位で一度チェックを行い、その後有効性を引き受けることができます
2)システムの他のコンポーネントは、私が書いたメソッドとインターフェースで動作することが期待されています。その場合、デバッグアサートステートメント、デバッグ例外、メソッドのコメント、および一般的なシステムアーキテクチャを使用して、必要な結果を制御できるか、データのチェックが必要になります。
3)コードのこの時点での失敗の結果は何ですか。全体が失敗しますか?エラーは他の場所でキャッチされ、そのエラーは少なくともキャッチされます。
4)ここにチェックを入れるのは理にかなっていますか?破損している可能性のあるデータにチェックを入れることもありますが、その時点でエラーを解決するのではなく、問題を解決するのに役立つ場合があります。その時点で、実際の問題を見つけるためだけに別の問題を追跡するのに何時間も費やす可能性があります。これは、ユーザー/開発者が報告したイベントに連鎖するイベントチェーンのデータの有効なチェックによるものです。
一般的に私は防御的なプログラマーですが、徹底したTDDと適切なユニットテストにより、必要なレベルでコードのチェックを行い、下位レベルのセクションに到達したら正常に動作することを確信できると信じています。