else のコメントの書き方

else のコメント、どこで書くのがいいかという話があったので、自分の思いを書いておく。
自分はこんな感じで書く。

// true の場合
if (hoge) {
    // なんかしょり
}
// false の場合 <- ここ!
else {
    // あんなしょり
}

一見すると見づらいかもしれないけど、最終的にこんな感じが今のところしっくりきてる。
理由はバージョン管理がしやすいしコードレビューもしやすいから。


例えば、下記のようにコメントを書いたとする。

if (hoge == 1) {
    foo();
} else { // 1 以外だとここに来ます!
    bar();
}

これだと、条件分岐が増えた場合は下記のようになる。

if (hoge == 1) {
    foo();
} else if (hoge == 2) {
    baz();
} else { // 1 か 2 以外だとここに来ます!
    bar();
}

この場合、diffは下記のようになる。

- } else { // 1 以外だとここに来ます!
+ } else if (hoge == 2) {
+    baz();
+ } else { // 1 か 2 以外だとここに来ます!

シンプルだと何をやったかわかるけど、こういうのが増えると管理が大変になる。複雑になってくると、ひとつひとつ条件が変わったかを確認する必要がでてきちゃったりして効率がわるい。
なので、if 〜 else if 〜 else はそれぞれをブロックとして分離して書いといたほうがいいと思う。

if (hoge == 1) {
    foo();
}
// hoge = 1 以外の処理!
else {
    bar();
}

この場合なら、以下のように変更になった場合

if (hoge == 1) {
    foo();
}
else if (hoge == 2) {
    baz();
}
// hoge が 1 か 2 以外の処理!
else {
    bar();
}

こんなかんじになるけど、diffとしては

- // hoge = 1 以外の処理!
+ else if (hoge == 2) {
+     baz();
+ }
+ // hoge が 1 か 2 以外の処理!

こんな感じになる。

つまり、コメントが変更されたことによって差分はでるものの、この場合は else if ブロックが挿入されただけっていうのがわかりやすい。コードレビューも捗る。