【C++】 クラス名の命名規則

【C++】 クラス名の命名規則

一般的な命名規則

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++のクラス名の命名規則についての詳細な解説です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です