Cpp Memo


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

C++に関する話題を自分用にメモ。

コーディング基準(整理後、別ページにする予定。)

基本ルール
  • クラス名/メソッド名/関数名/変数名は略さない。(適切な名称で。)
  • インデントはスペース4文字。(タブは使用しない。)
  • Javaスタイル

ファイル名は、「.cpp/.h」とする。
基本的に1クラス=1ファイルとする。
main関数は1ファイルとし、ファイル名の末尾はMain.cppとする。

変数の宣言は1行1変数とする。カンマで区切って複数宣言しない。


演算子やカンマ、イコールの前後は空白を入れる。
int value = 1 + 2;

コメントは基本的に上に記述。
// OK
int value = 1 + 2;

行の末尾に付与するコメントは禁止。
int value = 1 + 2; // NG

クラスやメソッドのコメントはdoxygen形式で。
/**
 * 関数の説明
 * @param a 引数A
 * @param b 引数B
 * @return 戻り値
 */
int execute(int a, int b) {
    // ...
}

/* */形式のコメントは、ファイル先頭のコピーライト程度に使用するのみで、
基本的に使用しない。
処理をコメントアウトする場合には、行頭に//を加える。
// int execute(int a, int b) {
//     // ...
// }


関数でも { の位置は行末で。
int execute(int a, int b) {
    // ...
}

if,for,whileでは1行の処理でも必ず{}を付ける。
if文
// if/else全体についてのコメント
if (condition1) {
    // condition1で実行する処理についてのコメント
    処理
} else if (condition2) (
    // condition2で実行する処理についてのコメント
    処理
} else {
    // elseで実行する処理についてのコメント
    処理
}

for文
for (int i = 0; i < size; i++) {
    // ...
}

while文
while (boolValue) {
   // ...
}

switch文
case ...:で必ず改行する。
// switch文全体に関するコメント
switch (value) {
case CASE_A:
    // CASE_Aで処理する内容のコメント
    break;
case CASE_B:
    // CASE_Bで処理する内容のコメント
    break;
case CASE_C:
    // breakしない場合、「FALLTHROUGH」の記述は必須。
    // FALLTHROUGH
case CASE_D:
    // CASE_C, CASE_Dで処理する内容のコメント
    break;
default:
    break;
}


class Foo {
private:
    // メンバ変数は先頭に「m_」を付与する。
    int m_value;
protected:
    // ...
public:
    // ...
};

グローバル変数には先頭に「g_」を付与する。
(ただしグローバル変数は基本的に使用しないこと。)

ポインタには末尾に「_p」を付与する。
(ただし文字列(char*)なんかは、_pをつけなくてもよい。)

例外は、std::exceptionを継承したクラスを作成する。
末尾はExceptionとする。

try {
} catch (XxxException& eXxx) {
}


using句は、クラス単位で。「using namespace xxx;」とはしない。
using std::cout;
using std::endl;


ヘッダファイル形式
#ifndef NAMESPACE_CLASS_NAME_H
#define NAMESPACE_CLASS_NAME_H

#endif

long型は使用しない。int64_tやint32_tを使用する。
(boost/cstdint.hpp)


わかりやすいコードを作成するための6つの方法
http://www-06.ibm.com/jp/developerworks/linux/library/l-clear-code/index.shtml

オブジェクト倶楽部コーディング規約の会
http://www.objectclub.jp/community/codingstandard/


g++の場合「-Wall」は必須。





valgrind
autotools



STL,boost,Log4cxx,ICU,ACE,CppUnitについて。

Log4cxx


現在の安定バージョンである0.9.7は、ログの時刻がGMTで出力されるなど使い勝手がよくない。
で、いろいろ調べてみてみると、もう0.10.0が準備されている模様。




CppUnit


cocuppa,coumaについて
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。