開発演習に入ったが、クラス図と要求される機能があるだけで、
シーケンス図などがなかったので各人が好きに内部をコーディングすることに。
Listから引数に一致するオブジェクトを返し、一致しない場合はnullを返す関数を実装する部分で、
1-1.拡張for分でリストを回す
1-2.指定された値と同じフィールドの値を持つオブジェクトを見つかった時点でreturnする
1-3.拡張for分を抜けるとnullがreturnされる
Object findById(int id){ // private変数としてObject型が格納されるListを保持しているとして for(Object item : list){ if(id == item.id) return item; } return null; }
2-1.返り値に指定されたオブジェクトの変数を宣言しnullで初期化
2-2.値が見つかったらオブジェクトの変数に参照を代入
2-3.Iteratorをbreakで抜けて宣言したオブジェクトの変数をreturn
Object findById(int id){ Object obj = null; // private変数としてObject型が格納されるListを保持しているとして for(Object item : list){ if(id == item.id){ obj = item; break; } } return obj; }
この2パターンで論争が発生。
講師と私はその場でreturn派
サブ講師ともう一人のJavaが出来る子は最後に1回だけreturn派。
Rubyだとブロックの最後の式が返り値として返ってくるので明示的にreturnをしなくてもいいが、
明示的に抜けたいときはreturnをかくので個人的には結構使う。
その方がfor文抜けて・・・とか無駄な処理がなくてすっきりする。
サブ講師と出来る子はJavaの標準的な書き方はreturnをあまり書かないという。
仕方がないのでメイン講師と2人でJavaのString#equalsをソースコードから見ると、
内部的にはreturn使いまくりだったw
まぁ、会社がそういうコーディング規約であるならそれに従う。
でもそうじゃなかったらその場でreturnだなー