TL;DR

ソースコードに直接書かれた具体的な数値のうち、意味が読み手に分からないもの。英語の magic number には「魔法の数字」という皮肉が込められている。

なぜ必要か

Wikipedia によると、マジックナンバーには 2 つの問題がある。1 つは、書いた本人は意図を分かっていても、後から読む人には数値の意味が分かりにくいことである。もう 1 つは、数値を変えるときに複数の箇所を直す必要が出ることである。

仕組み

Wikipedia によると、マジックナンバーを意味の分かる名前の定数や列挙型に置き換えて対処する。定数を初期化するときに書く数値そのものは、マジックナンバーとは見なされない。

例

Wikipedia は税込価格を求める式に書かれた 1.08 を例に挙げている。税率を TaxRate という定数にすると、意図が明確になり、税率が変わったときの修正も 1 か所で済む。

テスト駆動開発の仮実装では、まずマジックナンバーをベタ書きしてテストを通し、実装を進める中で変数に置き換える。

注意点

Wikipedia によると、0 と 1 は真偽値を表すこともあるので、文脈によってはマジックナンバーと呼ばれない。

関連

出典