K&Rの弊害
綺麗なプログラムを書くのは難しい。
そもそも、綺麗の基準が人によって違ったりする。時々、つまらない違いで喧嘩になったりもする。
つまらない例の最たるものが、インデント、{のぶら下げ方、と2単語のつなげ方(fooBarかfoo_barか)、カッコの前後の空白。
これらは別にどのように書いたところで、統計的にバグの数に違いがないという結果が出てる。チームで統一さえ取れてれば別にたいした問題ではないんだけど、どいつもこいつも自分の感情だけでギャーギャーわめく。案外科学的じゃないんだなソフトウェア業界って奴は。
他にも、Cの場合で意外とケンカになるのが、K&R発祥のいかにもCっぽい書き方
例えば、こんなのとか
if ( (fp = fopen("file.txt", "r")) != NULL ){
こんなの
while (*p++ = *q++);
K&Rはそもそも、Cの特徴を際立たせるため他の言語(COBOLとかPascalとか)と違う部分を強調した書き方をしてる。「Cではこんな書き方も出来るんだよ」という例を載せているのであって、「こういう書き方が優れている」と言ってるわけではない。それなのに、聖書であるK&Rがこう書いてるからと、思考停止して受け入れる原理主義者が実に多い。
ま、私なんかがとやかく言ったところでK&Rの権威にかなうわけでもなし、もう、どうしようもないくらいに広まっちゃってるんで、ある程度は受け入れるしかないんだけど。
2006/3/30 追記:
トラックバックでご指摘を受けたので追記。
K&RはCのリファレンス的な本であって、綺麗なプログラムを書くための本ではない。文法の例のために載せているサンプルコードもあり、妄信して真似すべきではない。
では、どうしたらいいのか?
簡単な話だ。綺麗なプログラムを書くための文献を参考にすればよい。
プロの人ならば、職場でコーディング規約が決まっているだろうから、多少自分の考えとは違っていても、まずはそれに従うべき。
一般書籍なら、取り合えずお勧めは「Code Complete」。分厚すぎるので「通勤通学時間=勉強時間」な人には持ち運びがつらいけど、それ以外は文句ない。
「センス・オブ・プログラミング」もお勧めできる。文体がすごく読みやすい。
今日、本屋で見つけて衝動買いしたんだけれども、偶然にも、細かい違いで宗教論争はすべきではないとか、上記の2つの例題とモロに同じものが載っていた。
Java専門だと 「超図解 Javaルールブック 」がある。立ち読みしただけだけれど、こちらは若干初心者向けな印象。各ページの見出しが一部不適切と感じたのと誤字が目立ったが、Amazonでの評価は悪くない。
最近のコメント