1

元 Google 社員のブログから情報を入手しました。彼は、Google の従業員は、Javaif条件について次のような規則を持っていたと述べました。

if (condition) {
    return x;
} else {
    return y;
}

しかし、後に Google 内部では次のように変更されました。

if (condition) {
    return x;
}
return y;

SO には同様の質問または重複した質問があるようです (例: this one )。これについては、 Oracle の公式 Java Code Conventionsも確認しました。たとえ無視できるものであっても、それらの違いに興味があります。

私は意見や人々が好むものを探しているのではなく、実際に識別可能な違いがあるかどうか、またはそれが本当に単なるスタイルの問題であるかどうか.

4

5 に答える 5

2

個人的には選びたい

if (condition) {
    return x;
} else {
    return y;
}

中括弧の有無にかかわらず、これは私にとってはるかに読みやすいです。これらは return ステートメントであるため、大きな違いはないかもしれません。しかし、以下の例のように、それらは単なるステートメントであるとしましょう:

if (condition){
    //some statements
} else {
    //some related statements
}

時間が進むにつれて、このコードは以下のようなものになるかもしれません

if (condition){
    //some statements
} else {
    //some related statements
}
//some totally unrelated statements

そのような場合、どれがその状態の影響を受けているかを明確に区別できます。将来、リファクタリングが必要になったときに、簡単になるかもしれません。

お察しのとおり、あくまで個人的な好みです。リード/アーキテクト/ピアに確認して、好みがあるかどうかを確認することをお勧めします。経験則として、自分の好みよりもチームの好みに合わせたほうがよいでしょう。

于 2013-08-05T05:27:58.477 に答える
0

どちらの場合も条件が評価されるため、違い (機能とパフォーマンス) はありません。違いはコード構造にあり、さまざまな人/組織が適用する書式設定の慣行にあります。

havingelseはより冗長または明示的であると主張する人もいます。

PMDFindbugselseには、冗長なコード品質のルール (警告レベル) があります。したがって、これらのコード分析ツールの既定のテンプレートを有効にしている場合、警告レポートにはそのような部分/メソッド呼び出しが含まれます。

複数のreturnステートメントがある場合は、コードの可読性が低下するため、回避することをお勧めします (PMD と FindBugs の同様の設定)。投稿したような単純なコードの場合、2 つを使用しても問題ないように見えますreturnが、異なる条件で異なる値を返す複雑な条件付きロジックを使用することを検討してください。コードを理解するのは簡単ではありません。より少ないreturnステートメントを持つ方が良い(理想的)のは、1つだけだと主張する人もいます:

int data = DEFAULT;
if(condition) {
  data = XYZ;
} else if(condition) {
  data = DDD;
}
return data;
于 2013-08-05T05:26:46.050 に答える