とんちゃんといっしょ

Cloudに関する技術とか日常とかについて書いたり書かなかったり

書き方のお作法は

開発演習に入ったが、クラス図と要求される機能があるだけで、
シーケンス図などがなかったので各人が好きに内部をコーディングすることに。


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だなー