kowさんは天ざる大好き

創作に絶望すると、世界が反転した日記

コードに絡みつく襞

エロい! エロいよ!
から大分経過した。(<なんのこと?


思考に絡みつく襞はまさに快楽だ。その襞は自分からは到達できないのがまたエロいというわけである。


今日も変なバグがでた。単純なforによる順次アクセス。
--iとすべきところを、++iと記述しまっていた。


どうしてこんな単純なバグがでるのだろう?
配列をtailから順次アクセスしていくと頭の中にあっても++iを記述してまうのか?
頭のなかで--iを想定してから、実際には++iと書いてしまうまでにわたしに何があったのだろうか?

    • コードスニペットのテンプレートに感情移入した(スニペットも--iと書くと疑わなかった)
    • 集中力がとぎれていて、ほとんど書くように無意識に++iと書いた
    • kow@suhitoがバカ

この部分のコードはスニペットを使わなかった。Eclipseもforと記述するとそのテンプレートを直近のコレクション、配列を自動的に選定して、forの記述を行ってくれる。わたしのマシンは遅いので、配列の順次アクセスぐらいでは使用しない。iteratorの場合は、タイプする文字数がおおいので使うが。
では、集中力がきれたのだろう。
集中力が切れる要因はよく分かる。なぜならkow@suhitoはキータイピングがとても遅い。バックスペースを押す回数が非常に多い。バックスペースを押すのは非常に危険な行為である。このバックスペースが一瞬にして流れを断絶させる。バックスペースをいかに押す回数を減らせるかが「バグが多いか少ないか」を左右するのではないかとも考え始めている。
タイピング精度はバグの量を左右する(?)。


kow@suhitoがとても参考になった本に、「コードコンプリート―完全なプログラミングを目指して」がある。この本、大学でアルゴリズム概論とかやる前に教えないといけない内容だと思った。わたしだって、一番最初にこれを読んでいれば、効率が良くプログラミングできたように思う。

メソッドの長さはどのぐらいにしたらええのん?

javaプログラマだと、1画面に収まる量、とかいう。それはなんの基準? 画面はAppleのシネマディスプレイ使ってる人はかなりかけるんと違う?
視認できる範囲に越したことはないが、それを意欲して選択させるにはプログラマには説得力がたりない。


ローカル変数名はどんなふうにつけたらええのん?
クラス名・メソッド名はどんなふうにつけたらええのん?
メソッドを呼び出す順番に規則がある場合に、どんなふうにメソッド名にしたらええのん?
ローカル変数を宣言する場所はどこが最適なのん?


これらの方針を5年もずっと知らなかったわけだから、よくわたしも読めないコードを書いてきていた。
デザインパターンとか、ジェネリックプログラミングとかこれはもうおもろい、興味深い、楽しい。
だけど、その前にこういう基礎があると、実践するのも楽だと思います。


コードに絡みつく襞を排除するには、こんな厄介な選択を思考感を感じないほどに選択できるようになっていないといけないのではないだろうか。我々は、小説家が句点を置くべき場所に注意を払うぐらいにローカル変数の宣言に注意を払うことができなければならない。


さて、「s/z」的な「コード」の話から元の話に戻っていかなければならない。
明日はテクストに絡みつく襞について考えてみたい。