汚いコードとは何か?
今回はメカAGさんのブログからご寄稿いただきました。
■汚いコードとは何か?
プログラミングを知らない人には、プログラマが言う「汚いコード」というものが実感できないかもしれない。それをシンプルに説明してみる。
たとえば円周率の3.14。円周率を使って円の面積を求めるプログラムが組まれているとする。3.14という数字が書かれているコードがある。
それがどうしたの?と思うかもしれない。ところがこのコードは汚いのだ。「え?なぜ?!」というのが、非プログラマの反応だろう。
ある場所では3.14で計算し、別な箇所では3.1415で計算すると、同じになるはずの数値が同じにならない。これをバグという。
* * *
ではどうすればいいか。プログラムのある箇所で「PI=3.14」と定義すればいい。そしてそれ以外の箇所ではPIを使い、絶対3.14という数値を使わないことに「決める」。
そうすればPI=3.14の箇所だけ「PI=3.1415」と修正すれば、全部直るわけだ。直し忘れもなくなる。
ところがある箇所ではPIを使い、別な箇所では3.14をそのまま使っていたりすると、PI=3.1415と修正した瞬間に、そのプログラムは正常には動かなくなってしまう。
つまりPIと書いてあったり、3.14と書いてあったり、はたまた別の箇所では3.141とか書いてあるプログラムは「汚い」のだ。
* * *
3.14ぐらいコードを検索すればいいんじゃない?と思った人!たとえば6.28という数値が使われていたらどうだろう。もちろん6.28=3.14*2だ。でも3.14を検索しても6.28は見つからない。円周の計算ではこちらの数値のほうが頻繁に出てくるかもしれない。
* * *
これを読んで多くの人は、じゃあ、ちゃんと「3.14を使わずにPIを必ず使いましょう」「6.28を使わずに(PI*2)を使いましょう」と、みんなで約束を決めて守ればいいじゃん、と思うことだろう。その通り!つまりそれが「綺麗にコードを書く」ということなのだ。
え?そんな単純なこと?と思うかもしれない。もちろん現実はこんなに単純じゃない。
* * *
たとえばコピペ。あちこちから使えそうなコードを切り貼りして組み合わせる。確かに手間を省ける。でもあちこちから持ってくるから、ある箇所は3.14を使っていて、別な箇所は3.1415を使っていたりする。定数の定義も「PI」だったり「PIE」だったりする。
