惰天使ロック

原理的にはまったく自在な素人哲学

変形Whitesmithインデント(2)

2011年06月27日 | 不良プログラマの夕べに
考えてみると、「夕べに」というなら最初にこっちの曲を掲げてしかるべきであった。

from YouTube

この曲は邦題も「イン・ジ・イヴニング」で知られているわけで、訳せば「夕べに」であることに今まで気づいていなかった。まあ、ワタシはこの曲にはあんまり思い入れがないのである。



プログラマにとってインデント・スタイルというのは利き手の左右にも等しいもので、違うスタイルで書かれたプログラムは読むのも書くのも難儀をきわめるものである。またまさしく箸の握り方にも等しいものだから、どういうスタイルであろうとそれほど凝ったものにはなるわけもない。箸でシャーペン回ししながらでないとメシが食えないとか、そんな人はいないわけである。

そうは言ってもたぶん、実際に日常的にこんな書き方をしている人は、世界広しといえどもわたしのほかにはあんまりいないだろう、という「変形」Whitesmithの変形たるゆえんのひとつが以下のswitch文の書法である。

switch(p->input_datatype)
        {
case DOUBLE_POWER:
        for(i = 0; i < p->samples; i++)
                { p->s[i].db = line[i]; }
        break;
case FLOAT_POWER:
        fline = (float *)line;
        for(i = 0; i < p->samples; i++)
                { p->s[i].db = (double)fline[i]; }
        break;
case DOUBLE_LINEAR:
        for(i = 0; i < p->samples; i++)
                { p->s[i].db = log10(line[i])*20.0; }
        break;
case FLOAT_LINEAR:
        fline = (float *)line;
        for(i = 0; i < p->samples; i++)
                { p->s[i].db = log10((double)fline[i])*20.0; }
        break;
case COMPLEX:
        cline = (complex *)line;
        for(i = 0; i < p->samples; i++)
                { p->s[i].db = log10(ZSQ(cline[i]))*20.0; }
        break;
        }

caseを中括弧より一段前に書く」という掟破りのインデントである。

わたしはもともと他人にコードを読ませる気がない(そもそも他人の書いたコードを読みたいなんて奴がいるわけがない。そして文章であれプログラムであれ、読みたいと思わない奴に読ませることほど悪い行為はめったにない)のだが、仕方なく読ませなければならないことはたまにあって、そうすると百発百中で相手が面喰らうのがこれである。その顔を眺めて「だから言っただろ?俺のコードなんか見ないで自分で自分のコードを書け」と言うのがわたしである。

どうしてこんな面妖なスタイルが生じたのかというと、C言語を覚えた時からこのswitch文というのが無駄にインデントを食うものであることが気に食わなかったわけである。昔のPCは1行80文字程度しかなかったから、ハードタブでインデントしているとすぐに1行の端まで到達してしまう。通常のスタイルではswitch文が入れ子になったりすると、いったいどんな風に書いても判りにくい代物になってしまう。なんとかなんないものかと考えあぐねているうち、このcaseというのはgotoラベルと同じようなものだということに気がついた。だったらラベルと同じように一段前にしてしまえば、switch文のせいでインデントが爆発することは、なくなりはしないまでも減るのではないかと思って意識的にそう書くようになったのである。果たして見違えるようにスッキリするようになった。以後どんな言語でもこのスタイルで通すようになったのである。
この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« THN1-2-06b | TOP | ゆでたまごのうた »
最新の画像もっと見る

Recent Entries | 不良プログラマの夕べに