コーディング規約は何のため?

投稿日:2008年03月03日 作成者:yasunaka

金曜日にある勉強会に出ていたのですが、その会ではコーディング規約が守られないのを如何に守ってもらうか、という話をしていました。(趣旨としては「ある特定の条件において」なのですが、その話はいろいろあるので省きます)

そもそもコーディング規約は何のためにあるのでしょうか? Sun Microsystems社のJava言語のコーディング規約の「コーディング規約の必要性」には以下のようなことが書いてあります。

— 以下、引用–
・ソフトウェアの生存期間におけるコストは、その80%が保守に費やされる。
・ソフトウェアの保守が最初から最後まで元の制作者によって行われることは、ほとんどない。
・コーディング規則は、エンジニアが新しく目にするコードをすばやく完全に理解できるようにして、ソフトウェアの可読性を向上させる。
・ソースコードをひとつの製品として出荷する場合、それがその他のすべての製品と同様にちゃんと梱包されていて、綺麗なものであることを確かめなければならない。
— ここまで —

つまり「ソースコードを誰にでも読みやすくするためのルール」がコーディング規約であるといえます。自分にとって読みやすいということではなく、誰にとっても読みやすいかどうか、です。

もし汚いコードを書いて、そのままにしてしまうと、それは当然、他の人にとって「読みにくい」コードであり、いわば負債を抱えた状態になります。後でそのコードに含まれたバグを取らなければならない人は非常に苦労することでしょう。

この考えからすると、独自のコーディングルールというのはこの精神からは外れたものだ、といえます。独自のコーディングルールは、そのルールに皆が慣れ親しんでいれば良いのですが、人材が動いたときにそのコーディングルールに慣れるまで余計な時間(=コスト)が発生する、という問題があります。

C言語のように「何もない」場合にはいろいろと独自のルールを導入しなければならないかもしれませんが、JavaとかC#のような言語の場合、むしろできるだけ素な、元々の言語に用意されたコーディングルールをそのまま採用するというのが正しい戦略だと私は思います。