メソッドのはじめでできるだけ問題を小さくするといいっていう話です.
問題が与えられたとき,その問題が小さいほど処理は簡潔になります.
public void print(Object o) { if ( o == null ) { throw new IllegalArgumentException("null"); } System.out.println( o ); }
print メソッドでは,表示の前に引数の null チェックをしています.
これによって,if文を通過したとき,
- o が null でない / o が null である
という状態を
- o は null でない
というシンプルな状態にできます.
再帰的なメソッドを書くときも,特異なケースを先に処理します.
public int sum(List<Integer> list, int index,, int acc) { // 基底部:リストの末尾まで処理が済んだとき if ( index == list.size() ) { return acc; } // 再帰部 return sum( list, index + 1, acc + list.get(index) ); }
上の例のように,特異なケースを取り除くことで少しでも問題を小さくできる場合があるので,早め return は便利です.
「1つのメソッドには1つの return 文」というコーディング規約を見たことがあるんですが,個人的には反対で,イレギュラーな入力に早い段階で対応するほうが楽な気がします.