2021-03-03 (We) [長年日記]
_ C の {}
を省略する
どうも最近、C の if は body が単文でも {}
で囲もう、
という流れなのだそうで。
私の場合、単文、しかも1行で書ける場合のみ {}
を省略する、
というスタイル。
if (foo)
a |= 128;
if (foo) {
a |=
some_long_long_function_name();
}
こんな感じ。
感覚的には、見た目にシンプルな場合のみ {}
を省略する感じ。
Emacs のコードみたいに、単文だからと、大きな body を
{}
なしで書くのもかなり勘弁願いたいな、と思う。
どこまでが body なんだかわかりゃしねー。
で、このスタイルに慣れすぎた結果……
if (foo) {
a = func(foo, bar, baz);
}
え? シンプルっぽく見えるのに、{}
で囲まれてる!!
何か妙なことやってる!?
じーーーーー (func が実はマクロだったなんて可能性も確認した上で)、
いややってないのか..
と思うので、無駄に {}
で囲む流儀はやめて欲しい。
ちなみに、私は、
if (foo) a = func(foo, bar, baz);
とは書かない。この例だと条件が foo だけなのでいいけど、 ちょっと長くなるだけで、どこまでが条件でどこからが body か パッと見で判らなくなるから。
と、こんな感じで続けていて、ブロックでミスったことはない。
あと、本題とは離れていくけど、
私は Python は嫌い。理由はいろいろあるけど、 主にはブロックをインデントで表現しているから。 これだけで糞言語と言って余りある (coffeescript も同様)。
インデントくらいプログラマの自由にさせて欲しい。 ブロック中の1行くらい、開発用コードであることがパッと見でわかるように、 インデントを大きくずらしておきたい。 製品コードにそれを残すつもりはないけど、手元の開発中のコードには 入れたい。そんなことすらできない Python は糞で十分。
まぁ自分が老害なのは認めているんだけど。
最近は IDE が発達してるよね (私は使ってないけど)? だから「これは開発用コードだよ」なんてマークも簡単に付けられて、 もちろん commit に含めようとしたら警告が出るようにもなってるんだよね? それなら Python の仕様でもいけるのだろうな。