Windowsプログラミング入門:ウィンドウの表示方法(VS + C++ + DirectX11前段階)

(以下、既存内容は省略)

授業で使うプログラミングの命名ルール

この授業で作成するプログラムの「クラス名」「関数名」「変数名」などは、以下のルールに統一します。 プログラムの可読性・保守性を高めるため、できるだけルールに沿って記述してください。

共通ルール

※ ただし、一時的に使う変数(例:i, j, tmpなど)は例外とします。

クラス名・構造体名

おすすめの補足ルール:

例:

例:

関数名

例:

参考資料: https://php-archive.net/php/words-in-function-names/

変数名

補足:なぜメンバ変数にアンダースコアを付けるのか?
クラスの中でローカル変数とメンバ変数の名前が重なると、どちらを指しているか分かりづらくなることがあります。
アンダースコアを付けることで、「これはメンバ変数です」と明確に区別できるようになります。
特にコンストラクタやセッターで、引数とメンバ変数が同じ名前になる場合にも混乱を避けられます。

例:

class Player {
public:
    Player(int hp) {
        hp_ = hp; // メンバ変数と引数が区別できる
    }
 
private:
    int hp_;
}; 

例:

定数名

例:

ファイルスコープの変数・定数の扱い

→ 外部ファイルからのアクセスを防ぎ、安全にファイル内で共有できます。

例:

namespace {
int globalCounter = 0;
const int SCREEN_WIDTH = 1280;
const int SCREEN_HEIGHT = 720;
} 

このようにしておくことで、他のファイルと名前がぶつかるのを防ぎつつ、明確に「このファイルだけで使う」と分かる設計になります。

例:

enum(列挙型)の命名ルール

例:`GameState`, `Direction`, `InputType`

例:`STATE_TITLE`, `STATE_PLAYING`, `DIR_UP`, `DIR_DOWN`

例:`INPUT_KEY_A`, `INPUT_MOUSE_LEFT` など

例:

enum GameState {
STATE_TITLE,
STATE_PLAYING,
STATE_GAMEOVER
};
 
enum Direction {
DIR_UP,
DIR_DOWN,
DIR_LEFT,
DIR_RIGHT
}; 

このようにすることで、enumの項目が定数と明確に区別され、コードの読みやすさと一貫性が向上します。

enumとenum classの違い

C++では列挙型に2つの書き方があります。それぞれに特徴があります。

enum(従来の列挙型)

例:

enum Direction {
UP,
DOWN
};
 
int dir = UP; // OK(暗黙のint)
 

enum class(スコープ付き列挙型)

例:

enum class Direction {
Up,
Down
};
 
Direction dir = Direction::Up; // スコープ付きで明示的 

どちらを使うべき?

→ 名前の衝突がなく、型安全で保守性が高いため。

このルールに慣れていくことで、大規模なプログラムでも読みやすく、他人と共同で開発しやすくなります。

マジックナンバーはやめてくれぃ

マジックナンバーとは?

例:

if (x > 1280) {
// 1280が何を意味するのか分かりづらい!
} 

なぜマジックナンバーがダメなのか?

よくあるマジックナンバーの例と解消法

// NG
if (x > 1280) { ... }
 
// OK
const int SCREEN_WIDTH = 1280;
if (x > SCREEN_WIDTH) { ... } 
// NG
for (int i = 0; i < 4; ++i) { ... }
 
// OK
const int MAX_ENEMIES = 4;
for (int i = 0; i < MAX_ENEMIES; ++i) { ... }
// NG
if (frame >= 60) { ... }
 
// OK
const int FRAME_WAIT = 60;
if (frame >= FRAME_WAIT) { ... }
// NG
SetColor(255, 0, 0); // 何の色?
 
// OK
const int COLOR_RED[3] = {255, 0, 0};
SetColor(COLOR_RED[0], COLOR_RED[1], COLOR_RED[2]);
// NG
velocity.y += 9.8f;
 
// OK
const float GRAVITY = 9.8f;
velocity.y += GRAVITY;

どう書くのが良いか?

まとめ