else ifのスタイル

前々からJavaのコーディングスタイル上、else ifは気持ち悪いと思っていました。

何が気持ち悪いかをうまく説明するのは難しいのですが、まず、elseとifという2つの事項が一つにまとめられてしまっているため、if文の大事な条件式の部分が後ろに来てしまうのが嫌です。

それに、ソース編集上、ifブロックを移動する場合に、余計なelseが先頭についてしまうので、コードブロックの移動先でまずelseを消すという余計な作業は発生するのにもイライラさせます。そんな手間、大したことないと思う人もいると思いますが、私がイライラするのはその不合理な点です。

前置きが長くなりましたが、今朝、Spring Frameworkのソースを眺めていたら、else ifを次のようなスタイルで書いている部分が目に留まり、ちょっと目から鱗でした。

  }
  else {
    if (...) { 
      ...      
    }         
  }

elseのブロックの中で、if文のブロックを開始させる。そうか、そんな単純なことで良いのですね。これならif文のブロックはそのブロックはelseから完全に独立になって、編集上もブロック単位のコードのコピーや移動が楽になります。

もちろん、swith文の代わり(つまり条件式の部分が文字列の比較のような)のelse ifは次のように書いた方がよいでしょう。

  } 
  else if (...) {
    ...
  }
  else if (...) {
    ...
  }