CrossFramework/コード規約
をテンプレートにして作成
ホーム
検索
最終更新
ヘルプ
Wiki書式ヘルプ(整形ルール)
開始行:
* コード規約 [#m8a05d57]
#contents
** C++ [#wc6ececc]
*** ソースコード [#f828ee0e]
- 文字コードはUTF8(コードページ65001)BOMあり。
- 改行コードはCRLF。
- タブは使用禁止。空白インデント幅4を使う。
*** ポリシー [#cb47bdb1]
- final版でフェールセーフにできる箇所はフェールセーフにす...
- フェールセーフな関数とそうじゃない関数があるとき,フェ...
-- Copy()とCopyStrict()みたいな感じ。
*** その他 [#q707cb80]
:共通|
#code(c,){{
// [パスカル形式]
// ・単語の頭を大文字,それ以外を小文字で表記する方法。
// 例:SuperVector3
//
// [キャメル形式]
// ・パスカル形式と基本的に同じで最初の一文字目だけ小文字...
// 例:superVector3
//
// [略語について]
// ・Microsoft C#方式をとり,2文字以下と3文字以上で分ける。
// 例:Identity = ID(パスカル) id(キャメル)
// Object = Obj(パスカル) obj(キャメル)
// Hyper text markup language = Html(パスカル) html(...
//
// [宣言]
// ・static変数の初期化コードで他のstatic変数・関数にアク...
//
// [スコープ]
// ・原則,括弧の位置は縦に揃える。ただし下記の場合のみ例...
// ・namespaceの宣言。
// ・1行で記述したほうが見栄えがいいとき。 例: if ( h...
// ・スコープ括弧が省略できる文は省略してはならない。必ず...
//
// [using]
// ・using namespaceおよびusingは関数の実装でのみ使ってよ...
// それ以外の箇所での使用はシンボルの衝突がおこる可能性...
//
// [doxygen関連]
// ・ユーザーが直接触ることがないシンボルに対するコメント...
// ・doxygenコメントで使用してよいタグリスト。これ以外は...
// @code @endcode @n @e @ref @addtogroup
// 以下のものはこの順番で記述すること。
// @copydoc
// @brief
// @return
// @param
// @see
// @details
// ・doxygenの@name機能は原則使用禁止。シンボルはabcの名...
// [class][struct][union]
// classは非POD型,structはPOD型で使い分ける。
class Class
// 継承クラスの記述順番は次の通り。
// ・実装があるクラス(1つまで)。
// ・インターフェースクラス(何個でも)。
: public Base
, public ICallback
{
public: // public,protected,privateの順番。
// 定義・宣言の順番
// 1. 型
// 2. static変数
// 3. static関数
// 4. インスタンス変数
// 5. デフォルトコンストラクタ
// 6. その他コンストラクタ
// 7. デストラクタ
// 8. インスタンス関数
// 9. 継承関数実装
// 10. 実装都合用変数
// 各要素の名前の付け方。
struct PublicType {};
static int PublicStaticVar;
static void PublicStaticFunc();
int publicVar;
void publicFunc();
int forImplementPublicVar_; // 「POD型のメンバ変数だ...
protected:
// 定義順はpublicと同じ。
// 各要素の名前の付け方。
struct ProtectedType {};
static int protectedStaticVar;
static void ProtectedStaticFunc();
int protectedVar;
void protectedFunc();
private:
// 定義順はpublicと同じ。
// 各要素の名前の付け方。
strict PrivateType {};
static int sPrivateStaticVar;
static void PrivateStaticFunc();
int mPrivateVar;
void privateFunc();
};
// enumの説明。
struct ColorKind
{
enum enum_t
{
// 定義・宣言の順番
// 1. 列挙値の定義
// 2. TERMINATE,MIN,MAXの定義
// 3. エイリアス値の定義
Red,
Green,
Blue,
// term
TERM,
MIN = 0,
MAX = TERM-1,
// alias
Default = Blue
};
};
// [namespace]
// 名前空間のスコープはinは1行1名前空間,outは一気に。
// 括弧の位置は下記の例に習う。
namespace RootName {
namespace InName {
}}
namespace {
// [無名空間]
// 定義順は下記の通り。
// 1. 型定義
// 2. 変数定義。
// 3. 関数定義。
//
// 無名空間の名前付けルールは下記の通り。
struct tType {};
int tVar;
void tFunc();
}
// [function]
// ・非インスタンスな関数の記述は禁止。
// 他のヘッダとぶつかる可能性があるため関数をnamespace...
// structやclassのstatic関数として記述する。
struct FunctionSet
{
// 引数の名前は a + パスカル。
// 引数が2つ以上の場合は改行する。
// 括弧の位置は下記に習う。
static void Func(
int aArg1
, bool aArg2
)
{
// ローカル変数の名前は下記の通り。
int localVar;
}
}
// [macro]
// 名前は大文字とアンダーバーでのみ構成できる。アンダーバ...
#define MACRO_CONSTANT (1)
#define MACRO_FUNC( aVar ) do{}while(false)
// 名前の衝突がおきないように,cppローカルなmacroは頭にt...
#define tMACRO_DEBUG_MODE (true)
// [preprocessor]
// #ifもインデントすること。
#if defined(DEBUG_VERSION)
#include "Debug.hpp"
#endif
}}
:ヘッダファイル|
#code(c,){{
/**
* @file
* @brief このファイルに対する説明。
* @author ファイル作成者名。
*/
#if defined(大文字モジュール名_INCLUDED_大文字ファイル名_...
#else
#define 大文字モジュール名_INCLUDED_大文字ファイル名_HPP
//-------------------------------------------------------...
// インクルードするものがあればここに記述。
// システムヘッダインクルード(abc順) -> 通常ヘッダインク...
#include <XBase/Matrix34.hpp>
#include <XBase/Vector3.hpp>
#include "App/EntryPoint.hpp"
//-------------------------------------------------------...
namespace モジュール名 {
// ・クラスなどシンボルを記述する場合原則は1ヘッダ1ク...
}
//-------------------------------------------------------...
// EOF
}}
:ソースファイル|
#code(c,){{
/**
* @file
* @brief このファイルに対する説明。
* @author ファイル作成者名。
*/
#include "Hoge/Foo.hpp" // 実装対象となるヘッダファイル。
//-------------------------------------------------------...
// インクルードするものがあればここに記述。
// システムヘッダインクルード(abc順) -> 通常ヘッダインク...
#include <XBase/Matrix34.hpp>
#include <XBase/Vector3.hpp>
#include "App/EntryPoint.hpp"
//-------------------------------------------------------...
namespace Hoge {
//-------------------------------------------------------...
// 無名空間が必要なら随時挿入。
namespace {
}
//-------------------------------------------------------...
// 実装順番はhppに記述されているものに合わせる。
// 名前空間の中だからといってインデントをする必要はない。
void Foo::func()
{
}
//-------------------------------------------------------...
}
//-------------------------------------------------------...
// EOF
}}
終了行:
* コード規約 [#m8a05d57]
#contents
** C++ [#wc6ececc]
*** ソースコード [#f828ee0e]
- 文字コードはUTF8(コードページ65001)BOMあり。
- 改行コードはCRLF。
- タブは使用禁止。空白インデント幅4を使う。
*** ポリシー [#cb47bdb1]
- final版でフェールセーフにできる箇所はフェールセーフにす...
- フェールセーフな関数とそうじゃない関数があるとき,フェ...
-- Copy()とCopyStrict()みたいな感じ。
*** その他 [#q707cb80]
:共通|
#code(c,){{
// [パスカル形式]
// ・単語の頭を大文字,それ以外を小文字で表記する方法。
// 例:SuperVector3
//
// [キャメル形式]
// ・パスカル形式と基本的に同じで最初の一文字目だけ小文字...
// 例:superVector3
//
// [略語について]
// ・Microsoft C#方式をとり,2文字以下と3文字以上で分ける。
// 例:Identity = ID(パスカル) id(キャメル)
// Object = Obj(パスカル) obj(キャメル)
// Hyper text markup language = Html(パスカル) html(...
//
// [宣言]
// ・static変数の初期化コードで他のstatic変数・関数にアク...
//
// [スコープ]
// ・原則,括弧の位置は縦に揃える。ただし下記の場合のみ例...
// ・namespaceの宣言。
// ・1行で記述したほうが見栄えがいいとき。 例: if ( h...
// ・スコープ括弧が省略できる文は省略してはならない。必ず...
//
// [using]
// ・using namespaceおよびusingは関数の実装でのみ使ってよ...
// それ以外の箇所での使用はシンボルの衝突がおこる可能性...
//
// [doxygen関連]
// ・ユーザーが直接触ることがないシンボルに対するコメント...
// ・doxygenコメントで使用してよいタグリスト。これ以外は...
// @code @endcode @n @e @ref @addtogroup
// 以下のものはこの順番で記述すること。
// @copydoc
// @brief
// @return
// @param
// @see
// @details
// ・doxygenの@name機能は原則使用禁止。シンボルはabcの名...
// [class][struct][union]
// classは非POD型,structはPOD型で使い分ける。
class Class
// 継承クラスの記述順番は次の通り。
// ・実装があるクラス(1つまで)。
// ・インターフェースクラス(何個でも)。
: public Base
, public ICallback
{
public: // public,protected,privateの順番。
// 定義・宣言の順番
// 1. 型
// 2. static変数
// 3. static関数
// 4. インスタンス変数
// 5. デフォルトコンストラクタ
// 6. その他コンストラクタ
// 7. デストラクタ
// 8. インスタンス関数
// 9. 継承関数実装
// 10. 実装都合用変数
// 各要素の名前の付け方。
struct PublicType {};
static int PublicStaticVar;
static void PublicStaticFunc();
int publicVar;
void publicFunc();
int forImplementPublicVar_; // 「POD型のメンバ変数だ...
protected:
// 定義順はpublicと同じ。
// 各要素の名前の付け方。
struct ProtectedType {};
static int protectedStaticVar;
static void ProtectedStaticFunc();
int protectedVar;
void protectedFunc();
private:
// 定義順はpublicと同じ。
// 各要素の名前の付け方。
strict PrivateType {};
static int sPrivateStaticVar;
static void PrivateStaticFunc();
int mPrivateVar;
void privateFunc();
};
// enumの説明。
struct ColorKind
{
enum enum_t
{
// 定義・宣言の順番
// 1. 列挙値の定義
// 2. TERMINATE,MIN,MAXの定義
// 3. エイリアス値の定義
Red,
Green,
Blue,
// term
TERM,
MIN = 0,
MAX = TERM-1,
// alias
Default = Blue
};
};
// [namespace]
// 名前空間のスコープはinは1行1名前空間,outは一気に。
// 括弧の位置は下記の例に習う。
namespace RootName {
namespace InName {
}}
namespace {
// [無名空間]
// 定義順は下記の通り。
// 1. 型定義
// 2. 変数定義。
// 3. 関数定義。
//
// 無名空間の名前付けルールは下記の通り。
struct tType {};
int tVar;
void tFunc();
}
// [function]
// ・非インスタンスな関数の記述は禁止。
// 他のヘッダとぶつかる可能性があるため関数をnamespace...
// structやclassのstatic関数として記述する。
struct FunctionSet
{
// 引数の名前は a + パスカル。
// 引数が2つ以上の場合は改行する。
// 括弧の位置は下記に習う。
static void Func(
int aArg1
, bool aArg2
)
{
// ローカル変数の名前は下記の通り。
int localVar;
}
}
// [macro]
// 名前は大文字とアンダーバーでのみ構成できる。アンダーバ...
#define MACRO_CONSTANT (1)
#define MACRO_FUNC( aVar ) do{}while(false)
// 名前の衝突がおきないように,cppローカルなmacroは頭にt...
#define tMACRO_DEBUG_MODE (true)
// [preprocessor]
// #ifもインデントすること。
#if defined(DEBUG_VERSION)
#include "Debug.hpp"
#endif
}}
:ヘッダファイル|
#code(c,){{
/**
* @file
* @brief このファイルに対する説明。
* @author ファイル作成者名。
*/
#if defined(大文字モジュール名_INCLUDED_大文字ファイル名_...
#else
#define 大文字モジュール名_INCLUDED_大文字ファイル名_HPP
//-------------------------------------------------------...
// インクルードするものがあればここに記述。
// システムヘッダインクルード(abc順) -> 通常ヘッダインク...
#include <XBase/Matrix34.hpp>
#include <XBase/Vector3.hpp>
#include "App/EntryPoint.hpp"
//-------------------------------------------------------...
namespace モジュール名 {
// ・クラスなどシンボルを記述する場合原則は1ヘッダ1ク...
}
//-------------------------------------------------------...
// EOF
}}
:ソースファイル|
#code(c,){{
/**
* @file
* @brief このファイルに対する説明。
* @author ファイル作成者名。
*/
#include "Hoge/Foo.hpp" // 実装対象となるヘッダファイル。
//-------------------------------------------------------...
// インクルードするものがあればここに記述。
// システムヘッダインクルード(abc順) -> 通常ヘッダインク...
#include <XBase/Matrix34.hpp>
#include <XBase/Vector3.hpp>
#include "App/EntryPoint.hpp"
//-------------------------------------------------------...
namespace Hoge {
//-------------------------------------------------------...
// 無名空間が必要なら随時挿入。
namespace {
}
//-------------------------------------------------------...
// 実装順番はhppに記述されているものに合わせる。
// 名前空間の中だからといってインデントをする必要はない。
void Foo::func()
{
}
//-------------------------------------------------------...
}
//-------------------------------------------------------...
// EOF
}}
ページ名: