YamaKen
yamak****@bp*****
2005年 8月 22日 (月) 15:48:13 JST
At Mon, 22 Aug 2005 13:21:59 +0900, mover****@hct***** wrote: > > - switch文のインデントが以下のようにかなり深くなっていますが、 > > > > switch (val) { > > case c1: > > { > > int i; > > foo(); > > } > > break; > > case c2: > > { > > bar(); > > } > > break; > > case c3: > > baz(); > > break; > > default: > > return; > > } > > > > 次のような形式に変えませんか? 変数宣言が無い場合は{}も外して。無条件 > > に{}で括りたいという動機はよくわかりますが、ソースが読みづらくなるデ > > メリットの方が大きいと感じられるので。 > > > > switch (val) { > > case c1: > > { > > int i; > > foo(); > > } > > break; > > case c2: > > bar(); > > break; > > case c3: > > baz(); > > break; > > default: > > return; > > } > これは逆にcase分の後に長いロジックを書く場合においては、"{"でくくった方が読み > やすいと思っています。もちろん単に1関数の呼び出しの場合だけだとこちらの方が > 良いとは思いますが。どう思われますか? 私の場合はcaseラベルとインデントでブロック境界(ブロックじゃない ですが)を視認してるんで、switch中の処理の流れを追うのには{}は関 係無いですね。case毎の{}のありなしは視覚的というよりも論理的にス コープとかスタックの昇り降りの発生として認識していると思います。 > caseのインデントが深くなっているのは修正します。 見てみました。だいぶ浅くなって見やすくなりましたね。 ただ、以下のようにcase c1のbreakがcaseラベルと同レベルに並んでい るのはすごく違和感があります。breakは「case c1の中」で発生すると 認識しているからです。こうするぐらいなら{}の中に入れてしまった方 がいいと思います。 switch (val) { case c1: { int i; foo(); } break; /* ←ここ */ case c2: bar(); break; case c3: baz(); break; default: return; } {}がcaseラベルと同レベルに並んでますが、これはlisp眼で見なかった 事にできるので私的には割とどうでもいいです。他の方はどうだかわか りませんが。 それと先のメールの例ではcaseラベルが前段と密着したコードを出しちゃ いましたが、私の場合は上記のように空行を入れてます。これでcase〜 空行を視覚的にひとかたまりの擬似ブロックとして認識します。 ------------------------------- ヤマケン yamak****@bp*****