列挙型: 意味のある定数

0や1といった数字に名前を与える。マジックナンバー撲滅の切り札。

列挙型 (Enum)
複数の定数をひとまとめに定義した型。内部は整数。
マジックナンバー
コードの中に突然現れる、意味不明な数字。排除すべきもの。
レストランのメニュー (Restaurant Menu)

列挙型は「レストランのメニュー」です。 もしメニューがなく、店員さんに「1番と5番をください」と注文しなければならないとしたら、間違って「激辛カレー(3番)」を頼んでしまう危険があります(マジックナンバー)。 ちゃんとメニューに「ハンバーガー」「コーラ」と書いてあれば、誰でも間違えずに注文できます。内部的には番号で管理されていても、人間には「名前」しか見えません。

マジックナンバーを消す

プログラム中で if (type == 3) のようなコードを見ると、誰もが「3って何?」と思います。これを「マジックナンバー」と呼び、バグの温床になります。

列挙型 (enum) を使うと、数字に意味のある名前をつけることができます。内部的には整数(0, 1, 2...)として扱われますが、コード上では RED, BLUE のように記述でき、可読性が劇的に向上します。

Enum Basic
// マジックナンバー (ダメな例)
if (state == 0) { ... } // 0って何?
// 列挙型 (良い例)
enum State {
TITLE, // 0
PLAYING, // 1
GAMEOVER // 2
};
enum State current_state = TITLE;
if (current_state == TITLE) { ... } // わかりやすい!