「メソッドのreturn文は一番最後に一個だけ」としなければいけない理由はありません。
戻り値はもっと柔軟に、必要に応じて必要な箇所でその都度返すべきです。
例えばこういう書き方をよく見かけますが、一工夫するだけでかなりシンプルになります。
public String hoge(int value) {
String retVal = "";
if(value < 0) {
retVal = "マイナスです";
} else {
retVal = "マイナスではありません";
}
return retVal;
}
戻り値をわざわざ変数retValに保持せず、メソッドが返すべき値が確定した時点で返してしまうべきです。
public String hogehoge(int value) {
if(value < 0) {
return "マイナスです";
}
return "マイナスではありません";
}
単に行数が減っただけでなく、デバッグするときの読みやすさが全然違います。
途中でreturnしていると、「このメソッドの処理はここで終わり」ということが一発で分かるので、そこから下を読まずにすみます。
また、微々たる違いとはいえ、変数が一個減るのでメモリの消費量も少し減ります。
この話は戻り値がある場合に限った話ではありません。
例えば下の2つのソースは、どちらが読みやすいでしょうか?
public void hogehoge(String value) {
if(value != null) {
~~~~~
(略)
~~~~~
}
}
public void hogehoge(String value) {
if(value == null) {
return;
}
~~~~~
(略)
~~~~~
}
私が読んできたプログラムの中では圧倒的に前者の方が多いです。
確かに書きやすさでは前者の方が上かもしれませんが、読みやすさでは間違いなく後者の方が上です。
なぜならば後者だとデバッグの際に、「引数がnullだったらこのメソッドは何もしない」ということが一発で分かるからです。
それに対して前者は、
・引数がnullだったときに他に処理が無いのか、一番下まで見ないといけない
・if文でネストが一段下がったままになる
など、読み手にとってあまり親切とは言えません。
「メソッドは、戻り値が確定したらすぐreturnする」ということを意識すると、可読性の高いプログラムが書けるようになると思います。