TL;DR
ソースコードに直接書かれた具体的な数値のうち、意味が読み手に分からないもの。英語の magic number には「魔法の数字」という皮肉が込められている。
なぜ必要か
Wikipedia によると、マジックナンバーには 2 つの問題がある。1 つは、書いた本人は意図を分かっていても、後から読む人には数値の意味が分かりにくいことである。もう 1 つは、数値を変えるときに複数の箇所を直す必要が出ることである。
仕組み
Wikipedia によると、マジックナンバーを意味の分かる名前の定数や列挙型に置き換えて対処する。定数を初期化するときに書く数値そのものは、マジックナンバーとは見なされない。
例
Wikipedia は税込価格を求める式に書かれた 1.08 を例に挙げている。税率を TaxRate という定数にすると、意図が明確になり、税率が変わったときの修正も 1 か所で済む。
テスト駆動開発の仮実装では、まずマジックナンバーをベタ書きしてテストを通し、実装を進める中で変数に置き換える。
注意点
Wikipedia によると、0 と 1 は真偽値を表すこともあるので、文脈によってはマジックナンバーと呼ばれない。