So-net無料ブログ作成

Google C++ スタイルガイド [プログラミング]

http://d.hatena.ne.jp/henschel/20080630/p1
http://www.henshi.net/k/hiki.cgi?GoogleCppStyleGuide
すばらしい。世の中には、ろくにコーディングしたことない SIer の人が実態を無視してなんとなく決めたコーディングルールのなんと多いことか。このスタイルガイドをベースにプロジェクト毎に譲れない必要最小限の手直しだけして提示されると幸せになる人がいっぱいいるような気がする。
(いまどき C++ を使ってるひとはあんまりいないか・・・)

名前付けのルールなんかはそのまま参考になるとして、 C++ の機能を制限している部分が結構あって、ちょっと意外。
(Google のシステムが、こんな C++ のサブセットで動いてるんだ・・・)
Python の「Explicit is better than implicit.」の精神に通じる部分が多いような。
自分の理解のために、C++ の機能を制限するような記述のところだけ抜粋してみる
# nakagami は、人に教えるほどには C++ を知らないので注意
・インクルードガードを持つこととし、その命名規則を定めている
・無名名前空間の使用は推奨され、using 指定子は使わない
・非 const のグローバル変数はスレッドを使うコードでは禁止
・グローバル変数を関数の戻り値で初期化してはいけない
・1変数を受け取るコンストラクタは explicit キーワード使用
・コピーコンストラクタは必要があるときだけ定義する
・コピーコンストラクタが必要ないときは AISALLOW_COPY_AND_ASSING マクロを使用し、明示的に使えないようにしておく
・継承よりも合成を使い、継承する場合はいつも public
・多重継承は、(Java のように)インターフェースクラスだけ許可
・演算子オーバーロードは、特別な状況(一部の STL アルゴリズムで必要)を除いてはダメ
・STL コンテナが operator== や operator< を必要とするように作ってはダメ
・全てのデータメンバは private にして、必要ならアクセサ関数を書く
・関数は小さくて狙いが定まっていることが望ましい
・ポインタのセマンテックスが必要なら scoped_ptr を使え。auto_ptr は使うべきでない
・参照で渡される引数は全て const でなければならない
・関数オーバーロードは同じ情報で違う型を返す場合だけ。引数を省略するためのものはダメ。
・デフォルト引数はダメ
・可変長引数や alloca() はダメ
・C++ 例外は使用しない
・実行時型情報 RTTI は使用しない
・ストリームはログを取るためだけに使用
・テンプレートオブジェクトのインクリメント/デクリメント演算子は前置形式
・可能ならいつでもsizeof(変数名)をsizeof(型)のかわりに使用
・Boost ライブラリは、今のところ一部分だけ許可

演算子のオーバーロードをしないで STL を使うっていうあたりが僕にはちょっと難しそう。
その他、僕のスキルでは理解しきれてない部分もあるが、後で調べることにする。

nice!(1)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 1

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

トラックバック 0