うまい! ざぶとん代わりにピザ1枚!

プログラム?おいしいに決まってんじゃん。 - $ dropdb 人生
素人が s/料理/プログラミング/g すると必ずスパゲティができるんですよ。

というだけならはてブでいいのだけど、この比喩のもう一つの意味に気がついてしまったのでentry。

ちなみにコードを知らない人のためにヤボな解説をすると、スパゲッティコード(spaghetti code)というのは、あちこちひっからまったコードのこと。実はたいていのスパゲッティが美味なように、スパゲッティコードで書かれたプログラムもマズいとは限らない。

毒が混入しなければ。

しかし、いったん毒が入るとえらいことになる。毒が入っていたのはスパゲッティなのか、それともソースなのか。特定するのは困難だ。

これがたとえばステーキだったら、毒が入っていても、毒が入ったのは肉なのかつけあわせなのかはすぐにわかる。

裏をかえせば、毒が入っていない限り、スパゲッティコードもまたOKということになる。が、毒はとにかく、虫(バグ)の混入を防ぐのは難しい。私は某ファーストフード店でカメムシが混入したハンバーガーを食したことがあるが、あまり思い出したくない思い出である。今だったらメディアスクラムになっていたかも知れないが、当時はのどかな時代だったので、店側は返金を申し出、私はそれを受け取り一件落着となった。

そうそう、ハンバーガーではなくバグの話。なぜスパゲッティコードがコーダーに嫌われるか、にも関わらず簡単にスパゲッティが出来上がってしまうかの根源的な理由が、そこにある。一人で味見している限り、気がつきにくいのだ。

実はスパゲッティコードは、「ふつうの人」よりも天才型の人の方が書きやすい。素人にはひっからまった混沌にしか見えないそれにも、彼らは一瞬にして秩序を見抜くのだから。散らかった机に例えてもよい。端から見て散らかっているように見えても、デスクのヌシにはヌシなりの秩序があるのだ。

よって、これを防ぐ一番の方法は、コードを晒し続けることとなる。実は素人か玄人かはあまり関係ないどころか、前述のようにコードを晒す機会が少ない玄人ほどスパゲッティ好きなのだ。

プログラム?おいしいに決まってんじゃん。 - $ dropdb 人生
PHPとPostgreSQLを使ったスパゲティコードをみせられたような覚えが……。」
だからプログラムはおいしいvこれが答えな!

というわけで、君のコードもそろそろ晒しましょう。コードと恥は、さらした数だけ奇麗になるよ!

Dan the Code Chef