【C++】 クラス名の命名規則
- 一般的な命名規則
- CamelCaseとPascalCase
- プレフィックス・サフィックスの使用
- 名前空間との組み合わせ
- 基底クラスと派生クラスの命名
- 抽象クラス・インターフェースの命名
- テンプレートクラスの命名
- 例外クラスの命名
- シングルトンの命名
- 総合的な例
一般的な命名規則
C++では、可読性と一貫性を保つために、クラス名の命名規則が重要です。一般的なルールは以下の通りです。
- クラス名は意味のある単語を組み合わせる。
- 単語の区切りにはCamelCaseまたはPascalCaseを使用する。
- 省略形は避ける(例:
DbMgr
ではなくDatabaseManager
)。 - 型を示すプレフィックスやサフィックスを適宜利用する。
CamelCaseとPascalCase
C++ではCamelCaseまたはPascalCaseが一般的です。
- PascalCase(大文字始まり): クラス名にはPascalCaseが推奨される。
- CamelCase(小文字始まり): 変数や関数名によく使われる。
例:
class UserManager {}; // PascalCase
class FileProcessor {}; // PascalCase
プレフィックス・サフィックスの使用
プレフィックスやサフィックスを付けることで、クラスの用途を明示できる。
例:
class CUserManager {}; // C++の伝統的なプレフィックス(推奨されない)
class UserManagerBase {}; // 基底クラスであることを示す
class UserManagerImpl {}; // 実装クラスであることを示す
名前空間との組み合わせ
クラス名が衝突しないように、名前空間(namespace)を活用する。
namespace network {
class ConnectionManager {};
}
namespace database {
class ConnectionManager {};
}
基底クラスと派生クラスの命名
基底クラスと派生クラスの関係を明確にするための命名規則。
class Animal {}; // 基底クラス
class Dog : public Animal {}; // 派生クラス
class Cat : public Animal {}; // 派生クラス
抽象クラス・インターフェースの命名
抽象クラスやインターフェースを示すために、”I” プレフィックスや “Base” サフィックスを使用することがある。
class IShape { // インターフェース
virtual void Draw() = 0;
};
class ShapeBase { // 抽象基底クラス
virtual void Draw() = 0;
};
テンプレートクラスの命名
テンプレートクラスの命名では、一般的な型名には “T” を付ける。
template <typename T>
class Container {
T value;
};
例外クラスの命名
例外クラスの命名には “Exception” サフィックスを付けるのが一般的。
class FileNotFoundException : public std::exception {};
class NetworkTimeoutException : public std::exception {};
シングルトンの命名
シングルトンパターンのクラスは、”Instance” メソッドを持つことが多い。
class Logger {
public:
static Logger& Instance() {
static Logger instance;
return instance;
}
private:
Logger() {}
};
総合的な例
複数の命名規則を組み合わせた総合的な例。
namespace graphics {
class IRenderable {
virtual void Render() = 0;
};
class Sprite : public IRenderable {
public:
void Render() override { /* 描画処理 */ }
};
class TextureManager {
public:
static TextureManager& Instance() {
static TextureManager instance;
return instance;
}
private:
TextureManager() {}
};
}
以上がC++のクラス名の命名規則についての詳細な解説です。