なぜ私はコーディング時に括弧(`{'と`}')を省略しないのか?

括弧ネタ(括弧を必ず付けるのか、省略してもよいとみなすか)はそこそこ定期的に盛り上がるように思う。

個人的には、括弧を省略可能な言語においては、明解なコードならば括弧をつけてもつけなくてもどちらでも構わないと考えている。

//  C++での例
// こういうのはOK
if (foo)
    do_foo();
if (bar)
    do_bar();

// でもこれはNGかなあ
if (foo)
    if (bar)
        do_bar();
    else
        do_baz();

// これは十中八九バグだよね
if (foo)
    if (bar)
        do_bar();
else
    do_baz();

(ただまあ「明解なコードならば」という条件は、複数人での開発においては基準の統一が難しいわけで……コーディング規約を作る際に面倒なので「括弧つけろ」となりがちではある)

一方で、実際に自分がコードを書く際には常に括弧をつけている(要は、他人のコードに関しては、条件付きで括弧なしでもOKと見なしている、ということ)。

私が括弧をつける理由は、重要度の高いものから順に次の通り:

  1. そもそも入力補完でifとかforとか括弧つきで補完されるから。わざわざ後で消すのは面倒だ。
  2. 括弧を省略すると、静的解析ツールがうるさいから。
  3. 基本Cプログラマだが、JavaScriptのコードを書くこともあるから。CやC++では括弧を省略しても許されるけど、JavaScriptではダメだと思うの、文化圏的に。かといって言語ごとに書き分けるのは面倒だから。
  4. ごく稀に、Go言語のコードを書くこともあるから。制御構造の本体部分を括弧で区切る必要がある言語を使用するにあたり、「いつもの癖で括弧を省略したら怒られた。鬱だ」という症状で挫けるのを避けるためには、「いつもの癖で括弧を書」けばよい。

まあ、一番大きいのは、エディタの入力補完だよなあ。Xcodeとか普通にif文でも入力補完が効くし(それも括弧つき)、常用しているvimも制御構文の入力補完(やはり括弧つき)を仕込んであるから。