[Anthy-dev 2258] Re: r5rs: SigSchemeへの要望

Back to archive index

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*****



Anthy-dev メーリングリストの案内
Back to archive index