はじめに 
このページの意味 
- 忘れないようにメモっておく。
- 自分のコードでこれに違反してたらただちに取り締まる。
キャメルとは 
AbstractList,ObjectInformation,など
単語の頭が大文字にしたやつのこと,らしい。
POD型とは 
初期化の際に,newを必要としないものをPOD型,と認識している。
つまり,メンバ変数にクラスのポインタを所持し,
それをコンストラクタでnewするものは非POD型。
コーディングルール 
クラス 
非POD型はclassで定義する。
書式は次の通り。
- 公開修飾子はpublic,protected,privateの順番
- 要素の順番
- typedef
- static定数
- static変数
- static関数
- メンバ変数
- コンストラクタ
- デフォルトコンストラクタ
- コピーコンストラクタ
- その他のコンストラクタ
- デストラクタ
- メンバ関数
- 内部クラス・構造体
構造体 
POD型はstructで定義する。
クラス・構造体名 
キャメル。
typedef 
キャメルで。
privateなら + '_' 。
static定数 
全部大文字,単語の区切りは'_'。
static変数・メンバ変数 
基本としてprivateに書くこと!
小文字から始まるキャメル + '_'。
private以外なら '_' は除去。
static関数・メンバ関数 
小文字から始まるキャメルで。
privateに記述する場合,頭に'_'。
内部クラス・構造体 
キャメルで。
privateなら + '_' 。
列挙型 
enumのこと。
列挙型名 
キャメルで。
要素名 
列挙型名 + '_' + キャメルで。
名前空間 
namespaceのこと。
記述順番は次の通り。
タイプ1.タイプ宣言。
- using タイプ名。
- タイプ宣言。
(abc順)
タイプ2.前方参照
- struct タイプ名
- class タイプ名
(abc順)
名前 
小文字から始まるキャメルで。
マクロ 
定数マクロなら,定数と同じ命名規則で。
関数っぽいマクロ( ex. abs() )なら,関数と同じ命名規則で。
インデント 
タブを使うこと。(タブサイズは4)
中括弧 
中括弧は次のように,縦のラインをそろえること。
1
2
3
4
5
6
7
|
-
|
-
!
!
| void main()
{
while(1)
{
}
}
|
インクルードガード 
インクルードガードは#ifdefでは書かない。
#pragma once にする。
ファイルルール 
拡張子 
.h : Cヘッダ
.c : Cソース
.hpp : C++ヘッダ
.cpp : C++ソース
.pch : プリコンパイルヘッダ
1タイプ1ヘッダ 
1つのヘッダファイル2つ以上の型を宣言しない。
ファイル名には,宣言した型の名前を用いる。
1名前空間1ディレクトリ 
1つの名前空間に対して1つのディレクトリを作成する。
ディレクトリ名には,名前空間をそのまま使用する。
名前空間.h 
次のような感じで,名前空間で公開すべきヘッダをインクルード記述した名前空間.hを設置する。
ディレクトリ構造
mylib
+--util.h
+--util
| +--RingBuff.hpp
| +--RingBuff.cpp
util.hの中身
1
2
3
4
5
|
|
#pragma once
#include <mylib/util/RingBuff.hpp>
|
ポリシー 
newしたクラスがdeleteする 
原則として,newしたクラスが責任を持ってdeleteする。
ただし,FactoryMethodなどで,newしたものを渡すときは例外とし,
その場合はコメントに”必ずdeleteすべし”ということを書くこと。
公開するものに略称は使用しない 
原則として,型名,関数名など
公開するもに略称を使用してはいけない。