慣例的コーディングルール | 悪態のプログラマ

悪態のプログラマ

とある職業プログラマの悪態を綴る。
入門書が書かないプログラミングのための知識、会社の研修が教えないシステム開発業界の裏話は、新人プログラマや、これからプログラマを目指す人たちへのメッセージでもある。

プログラマに、未経験のプログラミング言語でコーディングしてもらうと、微妙に違和感のあるコードを書いて来ることがある。

Java のコードを見ていると、このようなメソッドがあった。

String GetName();

VC (Visual C/C++) や VB (Visual Basic) を専門にしていたプログラマが書いたようだ。VC や VB では、関数名の先頭は大文字になるのが一般的である。しかし、Java では小文字になるのが普通なのだ。Java でも文法的には間違いではないので、コンパイルは通る。しかし、ここは慣例に従って、getName() に直すべきだろう。

原則として、自分だけが異なるコーディングルールを使うべきではない。可読性が落ちるし、コードに対して何らかの処理(例えば検索や置換のような)をしたい場合に、足かせになることもある(特に、上記のような例では、JavaBean のプロパティとして成立しないという問題もある)。

開発チームで細かいルールが決められていたり、プログラミング言語の提供元などからガイドラインが出されているような場合は、もちろん、それに従うべきだ。そして、そのような厳密なルールがない場合でも、慣例的なルールに従うべきである。


初めてのプログラミング言語を使うとき、「慣例的なルール」をどうすれば知ることができるだろうか? 最も簡単なのは、その言語が標準で持っているライブラリを見ることだ。

一般に、プログラミング言語は、文法とライブラリ(※1)から成っている。そして、ライブラリには、文法に規定されていないような慣例的なコードの書き方が反映されている(※2)。ライブラリのソースコードが公開されている場合は、それを読めば大いに参考になるだろう。また、公開されていない場合でも、関数やクラスなどのネーミングルールを知ることはできる。


それほど難しいことではないのだが、意外とできていないプログラマも多い。それどころか、確信犯的に他の言語の(あるいは我流の)書き方を貫こうとする人さえいるようだ(参考リンク:『Cプログラミング診断室 第8章』 Pascalが好き ・・・これはかなり酷い例だ)。

このブログで何度も主張していることだが、プログラミングという仕事は、ただ「動くプログラム」を書くだけの仕事ではない。可読性や保守性の高いソースコードを書かなければ、プロの仕事としては認められない。

プログラミング言語の文法はプログラムを動かすための最低限のルールにすぎない。文法を守れば何を書いてもいいというわけではないのである。それは、実生活で「法を守れば何をやってもいいというわけではない」のと同じである。




※1
組み込みの関数やクラス。最近は「フレームワーク」を持つ言語も多いが、ここではそれも「ライブラリ」に含めよう。

※2
逆に、一般のプログラマがライブラリの書き方を真似するので、それが標準的なルールになると言ったほうがいいのかもしれないが。



■関連記事
誰のためのコード?
まずは丁寧なプログラミングを
プログラムは二度書け
チームのために自分のスタイルを曲げる覚悟
プログラムに操られた男



超図解 Javaルールブック
超図解 Javaルールブック
posted with amazlet on 06.10.29
電通国際情報サービス開発技術部 エクスメディア
エクスメディア
売り上げランキング: 70,864
おすすめ度の平均: 4.33
4 ルールは早めに身につけたほうが良い
4 Javaを再利用化しやすくする為の工夫
5 Javaプログラマ必見!!


超図解 VB.NETルールブック
電通国際情報サービス開発統括部 エクスメディア
エクスメディア
売り上げランキング: 83,833
おすすめ度の平均: 4
4 VB.NETプロジェクトの管理テンプレート