関数の入力パラメーターを検証するのに最適な場所はどこですか:呼び出し元または関数自体ですか?
コーディングスタイルを改善したいので、この問題のベストプラクティスまたはいくつかのルールを見つけようとします。いつ、何がより良い。
私の以前のプロジェクトでは、関数内のすべての入力パラメーターをチェックして処理していました(たとえば、nullでない場合)。ここで、入力パラメーターの検証は呼び出し側の責任であることをいくつかの回答とPragmatic Programmerの本で読みました。
つまり、関数を呼び出す前に入力パラメーターを検証する必要があるということです。関数が呼び出されるすべての場所。そして、それは1つの質問を提起します:それは、関数が呼び出されるすべての場所でチェック条件の複製を作成しませんか?
null条件だけに興味はありませんが、入力変数(sqrt
関数への負の値、ゼロ除算、状態と郵便番号の間違った組み合わせ、またはその他)の検証に興味があります
入力条件をチェックする場所を決定する方法はありますか?
私はいくつかの議論について考えています:
- 無効な変数の処理が異なる場合、呼び出し側で検証するのが適切です(たとえば、
sqrt()
関数-場合によっては複素数を処理したいので、呼び出し側で条件を処理します) - チェック条件がすべての呼び出し元で同じ場合、重複を避けるために関数内でチェックすることをお勧めします
- 呼び出し元の入力パラメーターの検証は、このパラメーターを使用して多くの関数を呼び出す前に1回だけ行われます。したがって、各関数のパラメーターの検証は効果的ではありません
- 適切なソリューションは、特定のケースに依存します
この質問が他の質問と重複していないことを願っています。この問題を検索し、同様の質問を見つけましたが、彼らは正確にこのケースに言及していません。