【しばらく編集不可モードで運営します】 編集(管理者用) | 差分 | 新規作成 | 一覧 | RSS | FrontPage | 検索 | 更新履歴

うねりコード - 【アンチパターン】遠くから見ると、画面上でコードがうねっている。

【アンチパターン】遠くから見ると、画面上でコードがうねっている。 http://www02.u-page.so-net.ne.jp/xa2/senoh/98-03-c.htm#98-03-17 にあったのですが、もうないようです。 Google Cache http://www.google.com/search?q=cache:iLHk_SecF7oC:www02.u-page.so-net.ne.jp/xa2/senoh/98-03-c.htm+&hl=ja&ie=UTF-8&inlang=ja#98-03-17 に残っていたものを引用します。

98/ 3/17 (火) うねりコード  大学時代に私の同期のN村がモニタを見ながら、「悪いコードは遠くから見てもわかるんだよ、ほら、うねってるだろ」と言っていた。当時は笑うだけだったが、今は溜め息をつくばかりである。身の回りにあるコードはこんなのばかりだ。
 
 一応、「うねりコード」とは何であるのか説明すると、一つの関数のコードが異常に長く、インデントが異常に深く、そしてこれが一番重要なのだが、読んでいるうちに既視感 (デジャブ) に襲われるようなコードの事である。うねりコードの多くには面白い特徴がある。例えば、ほとんどのコメントが「変数セット」「変数初期化」「変数カウント」だけになったり、そのコードを作った人に誇らしげな笑顔を与えたり、更には「これはスパゲッティコードではない」と言わしめたりするのである (なんだか、書いてて辛くなってきた)。
 
 このような、うねりコードばかり書いたり見たりしていると、だんだん体に染み付いて、立派なうねりプログラマになる。うねりプログラマには特徴がある。彼らは極端なまでに goto 文を嫌い、フラグ変数を好む。巨大な配列をグローバルに宣言する。関数へのデータの引き渡しはポインタを使わず、配列の添え字を使用する。そして共通の合い言葉、「単に」を連発するようになる。
 
 「単に」と言う言葉は危険な言葉である。例えば、「この関数は何をしているの?」と聞くと、「単に、受け取った変数を処理して下 (の関数) へ渡しているだけです」と返ってきたりするのだが、「で、何をする関数なの?」と聞くと、「だから、単に処理して渡してます」といった具合に使われたりする。で、実際にコードをみると、まさに「単に」と言う他が無いほど、言葉にするのが不可能なコードが書かれていたりするのである。
 
 今日もうねりプログラマはコードをうねらせている。そして、極端に小さなフォントが表示されているモニタから痛くなった目を離し、こうつぶやくのである。「もっと大きなモニタと解像度が高いビデオカードがほしいなぁ」と。あぁ、うねりプログラマにも神の祝福あれ。

ほとんどのコメントが「変数セット」「変数初期化」「変数カウント」だけになったり