Top > Coding rule > C++

コーディング規約 / C++ Edit

目次 Edit

はじめに Edit

コーディング規約の共通の規約も参照してください。

コーディングスタイル Edit

インデント Edit

  • if、for、while、関数、クラスなどの{}は、同じラインに記述する。
    if( true )
    {
    }

コメント Edit

  • 一行のコメントは//を使用し、/* */は使用しない。
  • ブロックコメントをレベル分けする。
ブロックコメント レベル1 Edit

ファイルヘッダ、フッタなどに使用する。

/*■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
	内容
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■*/
ブロックコメント レベル2 Edit

関数ヘッダなどに使用する。

/*******************************************************************************
	内容
*******************************************************************************/
ブロックコメント レベル3 Edit
/*------------------------------------------------------------------------------
	内容
------------------------------------------------------------------------------*/
関数ヘッダ Edit
/*******************************************************************************
	概要	:	関数ヘッダです。(どんな内容の関数なのか)
	説明	:	関数の説明。どんな処理をするのか。詳しく記述。
			注意点などがあれば、それも記述。複数行可。
	Include	:	Main.h
	引数	:	u1 u1_Data		○○のデータです。
	戻り値	:	s4		○○な値を返します。
	Global	:	u4	Gu4_Value	(R)
			u2	Gu2_Data	(R/W)
*******************************************************************************/

Edit

shortなどの曖昧な型の使用は禁止。
u1,u4などを使用する。

使用可能な型 Edit

  • void*:アドレス
  • char:文字や文字列を扱う場合
  • si, ui:符号あり/なし自然整数
  • s1~s8:符号あり整数
  • u1~u8:符号なし整数
  • f4, f8:符号あり浮動小数点数(現状では、FPUの設定をしていないので、使用不可。)

上記のポインタ型も、もちろん使用可。

型定義 Edit

sはsigned(符号あり)を意味し、uはunsigned(符号なし)を意味します。
これは、Intelや任天堂をはじめ、さまざまなところで採用されています。

sやuの後の数字は、バイト数を意味します。(一般的にはバイト数ではなくビット数でu8,u16,u32など)
型のサイズを明確にすることで、バグの発生を予防します。
特にサイズを指定する必要がない場合はsiやuiなどにしておくと、将来バス幅が増えたりしたときにも最適なパフォーマンスが得られるかと思います。

定義*1サイズ
sisignedint機種依存
s1char1
s2short int2
s4long int4
s8long long int8
uiunsignedint機種依存
u1char1
u2short int2
u4long int4
u8long long int8
f4float4
f8double8

変数 Edit

命名規則 Edit

  • 1文字やローマ字は使用禁止。英語で意味がわかるように表記する。
  • 単語の先頭、及び区切りは大文字にする。
  • IDなどの略字はすべて大文字で記述する。
ヘッダ情報部 Edit

ヘッダ情報部と変数名部を"_"アンダーバーで分けて表記します。

//通常変数
u1	u1_Value;

//グローバルポインタ変数(アドレス固定)
char* const	GPCc_String = 0xff00;

ヘッダ情報部の優先順位は以下の順で記述する。

  1. M:クラスメンバ変数 / G:グローバル変数
  2. S:スタティック変数
  3. C:コンスタント定数
  4. P:ポインタ変数 / R:参照変数
  5. A:配列
  6. C:アドレスコンスタント定数(ポインタ変数,参照変数の場合のみ)
  7. 型名(u1,u4,cなど。ビットフィールドならs*bやu*bなど)
型名 Edit

ヘッダ情報部につける型名は以下のようにします。
'*'はビット数を表します。

型定義型名ビットフィールド
voidv
charc
sisis*b
s1s1
s2s2
s4s4
s8s8
uiuiu*b
u1u1
u2u2
u4u4
u8u8
f4f4
f8f8

宣言 Edit

  • ポインタ変数を宣言するときは、原則、型に付属させる形で記述する。
    //ポインタ変数
    u1*	Pu1_Pointer;
    
    u4*	Pu4_Pointer, u4_Value;		//二つ目以降はポインタではないので注意。

クラス・構造体 Edit

命名規則 Edit

クラス・構造体名 Edit
  • 1文字やローマ字は使用禁止。英語で意味がわかるように表記する。
  • 単語の先頭、及び区切りは大文字にする。
  • IDなどの略字はすべて大文字で記述する。
  • あまり長くならないようにする。6文字以下が好ましい。
メンバ変数 Edit

宣言 Edit

  • クラスの宣言はヘッダファイルに記述する。
  • class・structからクラス名・構造体名の間にはタブを入れる。
  • 定数、変数、メソッドを完全に分離した状態で記述する。
  • 定数は、原則、パブリック→プロテクティッド→プライベートの順に記述する。
  • 変数は、原則、プライベート→プロテクティッド→パブリックの順に記述する。
  • メソッドは、パブリック→プロテクティッド→プライベートの順に記述する。
  • メンバが無い場合は、アクセス指定子は省略可。
/*■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
	クラス・構造体
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■*/
/*******************************************************************************
	メインクラス
*******************************************************************************/
class	Main
{
//定数
public:
	enum	Error
	{
		ERROR = 0x80000001,
		ERROR_XXX,

		SUCCESS = 0x00000001,
		SUCCESS_XXX,
	}

private:
	const u4	CONSTANT;

//変数
private:
	u4		Mu4_ValuePri;		//プライベート変数

protected:
	u4		Mu4_ValuePrt;		//プロテクティッド変数

public:
	u4		Mu4_ValuePub;		//パブリック変数

//メソッド
public:
	Main( void );			//コンストラクタ
	~Main();			//デストラクタ
 	void	Init( void );		//初期化
	void	Main( void );		//メイン

private:
	void	Calc( void );		//プライベートメソッド
};

その他の規約 Edit

定数名 Edit

  • すべて大文字で表記する。
  • 単語の区切りは"_"アンダーバーを使用する。

ラベル名 Edit

  • gotoの多用は禁止。
  • 先頭に"_"アンダーバーを付ける

コメント Edit

お名前: URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White
  • RezrEVHa -- manmvyj? 2014-05-15 (木) 23:50:53

最新の10件を表示しています。 コメントページを参照


*1 IA32において

リロード   新規 下位ページ作成 編集 凍結 差分 添付 コピー 名前変更   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: Sun, 18 Mar 2012 11:03:36 JST (2466d)