OS Project Wiki の保存版 ヒデさん・アリスさんほか、OS部のみなさんが書いたものです。
2019年にサイトが消滅しました。当時あった211ページのうち、本文が残っていたのは86ページです。すべては復旧できていません。Common Crawl と Internet Archive に 残っていたものを組み直しています(最終取得 2019-05-24)。
編集・検索・添付などの機能は動きません。表示のみです。
Top > Coding rule > C++

人気の15件

Total : 8661
Today : 6
Yesterday : 4

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

目次

はじめに

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

コーディングスタイル

インデント

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

コメント

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

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

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

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

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

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

使用可能な型

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

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

型定義

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

変数

命名規則

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

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

//通常変数
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など)
型名

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

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

宣言

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

クラス・構造体

命名規則

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

宣言

  • クラスの宣言はヘッダファイルに記述する。
  • 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 );		//プライベートメソッド
};

その他の規約

定数名

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

ラベル名

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

コメント

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


*1 IA32において

Last-modified: Sun, 18 Mar 2012 11:03:36 JST (2382d)
保存 2018-09-25 ・ ページ一覧