Linux カーネル コーディング規約
C言語について知るためにLinuxのコーディング規約を読んでみた。百戦錬磨のハッカーの主張とあって,なるほどなぁと思うところが多い。K&Rをリスペクトしているところも,流石だと思う。やっぱりCだったらK&R,C++だったらD&Eとかプログラミング言語C++に従って,世の中の雑音に耳を傾けてはいけない。
興味深いのは,「インデント幅=8(かつ80文字)」と,「structをtypedefしない」というもの。
インデントについては,話しても不毛な話しか出てこないが,まぁ,何千人という人達が寄ってたかってコードを書く時,汚いコードを氾濫させないためには,この厳しい規則が役に立つようである。
興味深いのは「インデントの深さはNコまで」としないで,インデントそのものの幅を普通の倍にしているところ。80文字というのは,端末の標準のカラム数という,ある意味物理的な制約であるから,理系な人には納得がいきやすいのではないか。(そうでもないか。)
C++から来た人にはstructやenumをtypedefしないので毎回宣言の前に書かなければならないのは,結構辛い。まぁ,けれどもそれがCの世界なんだと思ってひとまずは従ってみようと思う。文法的には正しくても,表現として正しくない言い回しがあるのは,プログラミング言語にも当てはまることだ。さらに「正しい/正しくない」を越えて,「美しい/美しくない」というレベルの世界でも,やはりこの原則は守られるべきだろう。
ちょっと書き溜めたCのコードも少し修正してみようと思う。