Google C++プログラミングスタイル学習

2121 ワード

「Google C++プログラミングスタイルガイド」が出てきてしばらく経ったが、最近落ち着いて見ることができた.今後のコードで注意すべき部分を記録し、一般的に認められたり約束されたりしたルールについては、あまり説明しない.
参考:『Googleオープンソースプロジェクトスタイルガイド』
一、ヘッダファイル
1、できるだけ前置声明を使用して、ヘッダファイル依存のドミノ効果を避ける.
2、論理の簡単な短い関数はインライン関数を使って効率を高めることができる.
3、関数の入出力パラメータの順序を確定し、プロジェクトの中で一致を保つ.
4、ヘッダファイルの経路ははっきりしていて、順番はできるだけ以下の通りである:本cppは直接hファイル、Cライブラリhファイル、C++ライブラリファイル、その他のライブラリhファイル、本プロジェクトのその他のhファイルに依存する
二、ネーミングスペース
1、ソースファイルはできるだけ匿名空間を使用し、命名の衝突を避ける.
2、hファイルは匿名空間ではなく、ネーミング空間を使用するべきである.
3、できるだけ裸のグローバル関数を使わないで、静的メンバー関数あるいはネーミング空間の非メンバー関数で取って代わる.
三、類
1、构造関数は无意味な初期话操作のみを行い、他の操作をしないで、有意義な初期话操作はInit()関数を提供して完成することが望ましい.
2、デフォルトのコンストラクション関数は、メンバー変数がすべて組み込みタイプであるかどうかによって決まるかどうか.
3、すべての単一パラメータの構造関数はexplicitが宣言しなければならない.
4、コピーと付与構造関数の使用をできるだけ禁止し、以下のマクロで実現することができる.
//             operator=       
//      private:    
#define DISALLOW_COPY_AND_ASSIGN(TypeName) \
            TypeName(const TypeName&); \
            TypeName& operator=(const TypeName&);

5、データのみの場合structを使用する.
6、すべての継承はpublicであるべきで、そうでなければ、組み合わせの原則を使用する.
7、できるだけ多重継承を使用しないで、もしそうでなければ、ベースクラスは最初の以外は純粋なインタフェースクラスでなければならない.
8、演算子のリロードはできるだけ使用せず、対応する関数で置き換えます.たとえば、+演算子のリロードの代わりにAdd()を使用します.
9、関数はできるだけ短くて精悍で、機能は単一である.
四、Googleからのテクニック
1、スマートポインタの使用を理解する;
2、cpplintを使うpyでスタイルをチェックします.
五、その他
1、すべての参照パラメータはconstでなければならない.そうでなければ、対応するポインタで代用します.
2、C++異常を使用しないでください.そうでなければ、コードロジックが不完全であることを説明します.
3、RTTIを使用しないで、ユニットテストを除く.
4、C++スタイルのタイプ変換を使うべきである.
5、反復器とその他のテンプレートオブジェクトに対して使用する前自増、前自減の方が効率的である.
6、できるだけマクロの代わりにconstを使用します.そうでなければ、使用時にdefineを使用して、使用後すぐにundefを使用してください.
7、0で整数を表し、NULLで空のポインタを表し、‘0’で文字を表す.
8、sizeof(type)の代わりにsizeof(varname)をできるだけ使用する.
六、命名規則
1、タイプ名の各単語の頭文字はすべて大文字で、下線を含まない:MyExcitingClass、MyExcitingEnum;
2、変数名は小文字、下線で接続する.
3、定数とマクロはすべて大文字です.
七、注釈
1、一方通行注釈用//、複数行注釈用/**/;
2、ファイルの先頭にファイル注釈を付けて著作権と説明を宣言する.
3、クラスの定義の前にクラス注釈を付けてクラス機能を宣言する.
4、適切な関数宣言があるべきである.
5、特別変数には変数注釈が必要である.
6、巧みな設計とアルゴリズムには注釈が必要である.
八、フォーマット
1、総裁は最大1画面の幅を超えてはならない.
2、適当なスペースが必要です.