ソフトウェアアーキテクチャ博物館AtMuseum
FAQ


FAQ02:関数の引数は、必ず入り口でチェックしなければいけないのでしょうか?

A. 自システム外から来る引数はチェックした方がよいですが、自システム内の関数呼び出しはチェックしなくても良いでしょう。

防衛的プログラミングということで、盲目的に、関数の入り口で引数チェックをしているコードを見ることがあります。

自分でコントロールできない外部からの引数は、引数を受け取る関数でチェックすべきです。但し、自作の関数呼び出しでの引数チェックは、過剰な防衛的プログラミングといえます。本来すべき処理とは異なる冗長な判断が増えてしまいます。可読性と保守性が低下します。

自作の関数同士は「契約による設計」を前提として、引数はチェックしない、でよいでしょう。もし、おかしな引数が来たのであれば、それは単なる不具合です。

外部とのやり取りは防衛的プログラミング、自作の関数間は契約的プログラミング、をお勧めします。[やま]