ソフトウェアアーキテクチャ博物館AtMuseum
FAQ
FAQ
FAQ02:関数の引数は、必ず入り口でチェックしなければいけないのでしょうか?
A. 自システム外から来る引数はチェックした方がよいですが、自システム内の関数呼び出しはチェックしなくても良いでしょう。
防衛的プログラミングということで、盲目的に、関数の入り口で引数チェックをしているコードを見ることがあります。
自分でコントロールできない外部からの引数は、引数を受け取る関数でチェックすべきです。但し、自作の関数呼び出しでの引数チェックは、過剰な防衛的プログラミングといえます。本来すべき処理とは異なる冗長な判断が増えてしまいます。可読性と保守性が低下します。
自作の関数同士は「契約による設計」を前提として、引数はチェックしない、でよいでしょう。もし、おかしな引数が来たのであれば、それは単なる不具合です。
外部とのやり取りは防衛的プログラミング、自作の関数間は契約的プログラミング、をお勧めします。[やま]