C++コーディングスタイル

Googleが公開しているC++のコーディングスタイルガイド(Google C++ Style Guide)というのがあります。
http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml

(日本語訳:http://www.textdrop.net/google-styleguide-ja/cppguide.xml)

コーディングスタイルは開発する規模や持続性、過去資産との互換性etcでベストプラクティクスは違うと思うのですが、個人的には結構賛成できるガイドとなってます。 そこで個人的見解でいくつかピックアップしたいと思います。


◆超賛成

・The #define Guard(#defineガード)
http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#The__define_Guard

(日本語:http://www.textdrop.net/google-styleguide-ja/cppguide.xml#_define_%E3%82%AC%E3%83%BC%E3%83%89)

"#pragma once"で楽してます。ごめんなさい。


・Class:Inheritance(継承)
http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Inheritance

(日本語訳:http://www.textdrop.net/google-styleguide-ja/cppguide.xml#%E7%B6%99%E6%89%BF)

C++始めた時は継承に憧れた時もありますが、安易に使わずにコンポジションで済ますほうが良いなーっと。


・Use of const(const使おうよ)
http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Use_of_const

(日本語訳:http://www.textdrop.net/google-styleguide-ja/cppguide.xml#const%E3%81%AE%E4%BD%BF%E7%94%A8)

const書く手間だけで、コンパイル時にエラー検出してくれるしクラスメンバ関数に付ければクラス使用する側もこの関数によってクラスの挙動が変更されない事が保証されて安心だし基本良いことづくし。


・0 and NULL(0とNULL)
http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#0_and_NULL

(日本語訳:http://www.textdrop.net/google-styleguide-ja/cppguide.xml#0_%E3%81%A8_NULL)

C++の構文的にはどれでも大丈夫だけど可読性の為に"整数には 0 を、実数には 0.0 を、ポインタには NULL を、文字には '\0' を使うこと。"と使い分けしましょうというお作法。


◆議論

・Naming(命名規則)
http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Naming

(日本語訳:http://www.textdrop.net/google-styleguide-ja/cppguide.xml#%E5%91%BD%E5%90%8D%E8%A6%8F%E5%89%87)

「命名規則」全般は社内文化とか色々で違うのでなんとも。自分もプログラム初めてから色々変わってるし。 だいたい命名規則は宗教戦争になってしまうので怖いのでノーコメント。


・Comments(コメント)
http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Comments

(日本語訳:http://www.textdrop.net/google-styleguide-ja/cppguide.xml#%E3%82%B3%E3%83%A1%E3%83%B3%E3%83%88)

スタイルはコメントからドキュメント作成したりするツールによるだろうし、コメントの中身は日本語力なのでギャル語とかでなければ。。。


・Formatting(書式)
http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Formatting

(日本語訳:http://www.textdrop.net/google-styleguide-ja/cppguide.xml#%E6%9B%B8%E5%BC%8F)

揉めますよね。 まあ、その中でも反対者少なめでオススメできるのは
・クラスの書式:public, proceted, privateの順に書きましょう
・if文のelseは"}else{"みたいに1行で書こう
・namespaceの{}はインデント無しで
辺りでしょうか。


・Exceptions(例外)
http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Exceptions

(日本語訳:http://www.textdrop.net/google-styleguide-ja/cppguide.xml#%E4%BE%8B%E5%A4%96)

C++の例外使用は議論の的だよねー。あんまり使わないかな。



C++の学習をされている方は目を通して損の無い内容になっているので、時間を見つけて見てみると良いのではないでしょうか。




K.K