マジック・ナンバーとは,ソース内に埋め込まれた,プログラマ本人にしか意味が分からない数値のこと(文字列の場合は「マジック・ワード」)。例えば,配列を使ったfor文のプログラムで,配列の個数を数値で記述するようなケースだ( 左上の「10」)。このようなケースでは,あらかじめ配列の個数を意味する定数「ArrayCount」を定義し,プログラムではその定数を用いるべきである(図左下)。そうすれば,ほかの人がソースを見る場合や,時間を置いて自分でソースを見直す場合でも,意味をとらえやすく保守性が上がる。数値を変更する場合も定数の値を書き換えるだけで済む。

図●マジック・ナンバーは定数化すべきだが例外もある
図●マジック・ナンバーは定数化すべきだが例外もある
開発者本人でないと分かりづらい数値は定数化すべきだ。ただし,過度の定数化は,かえってソースの可読性を下げることがあるので,例外は認めるべきである
[画像のクリックで拡大表示]

 とはいえ,杓子定規に考えるのではなく柔軟に適用したい。「一度しか使わない値や,変更しない値などは,定数化せずに直接記入し,コメントなどで説明を補った方がよい」(サイエントビジネスアソシエイツ マネジャー 武内和弥氏,図右)。