トップ «前の日記 最新 次の日記»

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 の仕様でもいけるのだろうな。


編集 パスワード変更