「最後行ではtrueを返すよう作れ」?
http://q.hatena.ne.jp/1169893354
こんなネタがあったんだ.
戻り値がbool型の関数です。何の処理をするものかは無視してください。
この関数、最終行でfalseを返しています。これはやめろと注意されたことがあります。
(最後行ではtrueを返すよう作れということ)
答:NO.
そんなことに拘る暇があったら,良いコードを書く勉強をしろ.最後で返す値がtrueかfalseかなどは,コードの善し悪しにほとんど影響しない.良いコードを書いた結果として「最終行でtrueを返す」ということはあるが,最終行でtrueを返したからと言って良いコードになるとは限らない.
また「最後ではtrueを返すべき」という説自体も極めて珍しい.
ちょっと面白いのがこの意見.
逆に電気回路を組んだり、シーケンサーでラダーソフトを組んだりする場合は「true」派ですね。非常停止回路を組むときとかを考えるとは、やはり「全ての条件をクリアした時、初めて正常を返す」ようにしておかないと、人命をおびやかすことにもなりかねないからです。
こういう話はあるかもしれない.特に「nullを返すな*1」なんてのはこのパターンだ.
話を戻して、プログラミングではその逆です。
最後に「false」を返すようにしておけば、いろんな条件式を経て、全ての正常条件をクリアした時、「異常」を返すので条件の入れ忘れ等があっても、最悪の事態は免れるからです。
残念だけどプログラムでは,trueを返すのとfalseを返すのとどちがより危険になるかは,一般的には決まらない.
この例では一応言語は規定していないみたいだけど,そもそもJavaのように例外機構のある言語では,真の意味で「異常」を表すのは例外であって戻り値ではない.trueだろうとfalseであろうと,戻り値を返すのは「正常終了」だ.*2
あと,もし必要であれば引数チェックは最初にするので,異常系チェックのコードが最初にくるのは普通ですね.*3
public boolean isEditMode(int param){ if( (param < MIN) || (param > MAX) ){ throw new IllegalArgumentException(); } 〜なんらかの処理〜 if (param > 80){ return true; } return false; }