- PR -

Javaコードスタイル

投稿者投稿内容
H2
ぬし
会議室デビュー日: 2001/09/06
投稿数: 586
お住まい・勤務地: 港
投稿日時: 2002-02-21 12:22
みなさんに質問。

コード:
  if(condition1) {
      return x;
  } else if(condition2) {
      return y;
  } else {
      return z
  }


は最初のif文にreturnが入っています。この場合、condition1trueだとreturnが実行されるのでelse...else if文は必要ありません。いわゆるredundant(冗長)ってやつなので、
コード:
  if(condition1) {
      return x;
  } 
  if(condition2) {
      return y;
  }
  return y


とも書くことができます。私個人の意見では前者の書き方は条件分岐しているのがより鮮明に表現されている思うのですがみなさんはどうしているのでしょうか。
hatena
会議室デビュー日: 2002/02/14
投稿数: 14
投稿日時: 2002-02-21 12:53
自分の好みは、後者です。

コーディングする人によりますけど、前者の方は、ネストが深くなる傾向があると思います。
条件を記憶しているのが、限界になる。今回は単純な例なので、大丈夫です。

リファクタリングの影響があるかも?
H2
ぬし
会議室デビュー日: 2001/09/06
投稿数: 586
お住まい・勤務地: 港
投稿日時: 2002-02-21 13:32
引用:

hatenaさんの書き込み (2002-02-21 12:53) より:
自分の好みは、後者です。

コーディングする人によりますけど、前者の方は、ネストが深くなる傾向があると思います。
条件を記憶しているのが、限界になる。今回は単純な例なので、大丈夫です。

リファクタリングの影響があるかも?


たしかに・・・。ネストが深い場合はリファクタリングで別メソッドにしたほうがいいでしょうね。そういえばconditionの内容によってはswtitch文でも大丈夫かもしれないですね。
miki
大ベテラン
会議室デビュー日: 2001/09/21
投稿数: 174
お住まい・勤務地: 東京都八王子市
投稿日時: 2002-02-21 17:33
私の好みも後者です。
ただし、普通のif elseの場合はこちらの方が好みです。
コード:
if (condition1) {
  xxxxx;
}
else if (condition2) {
  xxxxx;
} 
else {
  xxxxx;
}


elseから始まるのは気持ち悪いですかね。
これだと、ブロックを開始するステートメントはすべて同じ書き方でいけるのです。
cur&pasteも簡単。
H2
ぬし
会議室デビュー日: 2001/09/06
投稿数: 586
お住まい・勤務地: 港
投稿日時: 2002-02-22 20:58
引用:

mikiさんの書き込み (2002-02-21 17:33) より:
elseから始まるのは気持ち悪いですかね。
これだと、ブロックを開始するステートメントはすべて同じ書き方でいけるのです。
cur&pasteも簡単。



うーん、ちょっと気持ち悪いけど、cut&pasteは楽そうですね。でもtry..catch..final文はどうですか?
コード:
try {
   ...
} catch(Exception ex) {
   ...
} finally {
   ...
}


で一続きになってないと嫌じゃないですか? おもいっきり主観が入りまくりですけど。
kaho
会議室デビュー日: 2001/08/14
投稿数: 12
投稿日時: 2002-02-22 22:40
私はメソッド内にreturn文を複数書くのは避けています。
たとえば後からメソッドの先頭でストリームを開いておいてメソッドから
出るときに閉じるような処理を入れた場合、returnがある場所全て探して
closeしないといけなくなるからです。
無秩序にreturnを入れておくと閉じ忘れてしまうので、ifブロックやswitch
ブロックではたとえ冗長になってもreturnはせず、ローカル変数に値を
代入してブロックの外で返すようにしています。

・・・って、慎重すぎますか?というか、そもそもの問いの答えになっていない?
まりり
ぬし
会議室デビュー日: 2001/12/05
投稿数: 329
投稿日時: 2002-02-23 01:05
>kahoさん
そういう場合はfinallyブロックでやりましょう・・・


で、私の好みはやっぱり、

if(xxx){
 xxx
}else{
 xxx
}

ですね。
kaho
会議室デビュー日: 2001/08/14
投稿数: 12
投稿日時: 2002-02-23 13:59
> >kahoさん
> そういう場合はfinallyブロックでやりましょう・・・

ifブロックにはfinallyは使えませんが?ちょっと趣旨が分かりません。
try-catchはコストが高いので条件分岐程度には使わない方が良いと思いますし、
そもそも例外を送出しないブロックに使うのはどうかと。

スキルアップ/キャリアアップ(JOB@IT)