かっこがないと読めない!!
C言語だとif文の中身が一文の時にかっこをつけなくても良い。
if (x > 0)
hoge();
今日これについて話します。
実際に遭遇した悪質な例
一瞬なんで動くのか脳がバグったコード。これ書く人きらい。条件式や中身は適当です。
if (x > 0)
switch (x) {
case 1:
hoge();
break;
case 2:
fuga();
break;
default:
break;
}
piyo();
switch文がぱっと見浮いてるように見えます。これはif文から見たらswitch文は一文に見える?ので動作はします。
if (x > 0)
switch (x) {
case 1:
hoge();
break;
case 2:
fuga();
break;
default:
break;
}
} //error!!!!!
piyo();
あれ?って思ってかっこを追加したくなりますが、これだと開きがないので動作しません。
実際に遭遇した悪質な例2
int x = 5;
int y = 8;
if (x > 0)
if (y > 0) {
x++;
if (x > 3) {
x++;
y++;
} else
x++;
}
samba();
これも同様で上位のif文から見たらif文は一文なので動作はします。でもマジで見にくいので本当に一文とはいえかっこをつけて欲しいです。
つけない心理
ちなみに1個目の例と2つ目の例のコード考えた人は同じです。マジで理解できないです。やめr
一旦寄り添ってみます。
- タイピング時間を短縮できる
- C言語の仕様を理解してるからかっこをつけなくていい場合がわかる自分に惚れてる
頑張って考えてみましたがこれしか思い浮かびませんでした。何か僕の知らないメリットがあればコメント欲しいです。でも10年プログラミングしてきてそんなシチュエーションは今のところないです。
私の結論
僕は基本的にかっこをつけるべきだと思います。
- スコープの明確化
- 見やすい(階層構造の明示)
- メンテナンス性
かっこをつけるだけでこれだけのメリットを享受できます。
{
一つ打つ時間なんて誤差なので、大幅な時間短縮につながるわけではないしちゃんとやはり打って欲しいです。
まとめ
括弧つけろ