2008年04月26日 14:00 [Edit]
スパゲッティ(コード)はなにがマズいのか
うまい! ざぶとん代わりにピザ1枚!
プログラム?おいしいに決まってんじゃん。 - $ dropdb 人生素人が s/料理/プログラミング/g すると必ずスパゲティができるんですよ。
というだけならはてブでいいのだけど、この比喩のもう一つの意味に気がついてしまったのでentry。
ちなみにコードを知らない人のためにヤボな解説をすると、スパゲッティコード(spaghetti code)というのは、あちこちひっからまったコードのこと。実はたいていのスパゲッティが美味なように、スパゲッティコードで書かれたプログラムもマズいとは限らない。
毒が混入しなければ。
しかし、いったん毒が入るとえらいことになる。毒が入っていたのはスパゲッティなのか、それともソースなのか。特定するのは困難だ。
これがたとえばステーキだったら、毒が入っていても、毒が入ったのは肉なのかつけあわせなのかはすぐにわかる。
裏をかえせば、毒が入っていない限り、スパゲッティコードもまたOKということになる。が、毒はとにかく、虫(バグ)の混入を防ぐのは難しい。私は某ファーストフード店でカメムシが混入したハンバーガーを食したことがあるが、あまり思い出したくない思い出である。今だったらメディアスクラムになっていたかも知れないが、当時はのどかな時代だったので、店側は返金を申し出、私はそれを受け取り一件落着となった。
そうそう、ハンバーガーではなくバグの話。なぜスパゲッティコードがコーダーに嫌われるか、にも関わらず簡単にスパゲッティが出来上がってしまうかの根源的な理由が、そこにある。一人で味見している限り、気がつきにくいのだ。
実はスパゲッティコードは、「ふつうの人」よりも天才型の人の方が書きやすい。素人にはひっからまった混沌にしか見えないそれにも、彼らは一瞬にして秩序を見抜くのだから。散らかった机に例えてもよい。端から見て散らかっているように見えても、デスクのヌシにはヌシなりの秩序があるのだ。
よって、これを防ぐ一番の方法は、コードを晒し続けることとなる。実は素人か玄人かはあまり関係ないどころか、前述のようにコードを晒す機会が少ない玄人ほどスパゲッティ好きなのだ。
プログラム?おいしいに決まってんじゃん。 - $ dropdb 人生PHPとPostgreSQLを使ったスパゲティコードをみせられたような覚えが……。」だからプログラムはおいしいvこれが答えな!
というわけで、君のコードもそろそろ晒しましょう。コードと恥は、さらした数だけ奇麗になるよ!
Dan the Code Chef
この記事へのトラックバックURL
再利用が難しいということがあると思います。
これは間違いだと思いますよ。
最近はいろいろなブログを書くことで磨かれるような事をいっていますが、誰かが自分のブログを見てくれて、さらにレスを返してくれて初めて磨かれるのです。
blogを見に来る人がgoolelobotと自分だけという状態では、何の意味もないと思います。そして、自分のブログに対して反応がくるようにする最善の方法はOFFで有名になることだと思います。
難しいと思います。
>いまどきの言語で、スパゲッティコードを作るほうが
>難しいと思います。
それがそうでもないんだな。世の中広いよ。
やこくさんへ。id:dropdb 氏はブログ界で有名人ですので、「晒せば上達」の法則は彼女に適用できると思います。
レスありがとうございます。
dropdbさんを知らなかったのですが、「晒せば上達」の環境にいる人だったんですね。
純粋にうらやましいです。
いやほんと、その通り。
誰もコードを読まなかったとしても、それでも充分効果がある。