マジックナンバーとは
- プログラム中に突如出現するマジカルでミラクルでドリームファンタジーな数字。本稿で解説。
- プロ野球において、上位チームが下位チームに対して「上位でシーズンを終了することが確定するまであと何勝しなければいけないか」を表す数字。→マジックナンバー(野球)
- 2003年元日発売、KICK THE CAN CREWのメジャー2ndアルバム。
- 荒井チェリーの漫画。2004年『COMICぎゅっと!』(平和出版)に連載、単行本は未刊行。
- 2009年に発売された坂本真綾のシングル。テレビアニメ「こばと。」OP
- 原子物理学における、特殊な数列。ある特定の原子核が他の原子核に比べ特異的に安定になる現象が知られており、これをマジックナンバー(魔法数)と呼ぶ。核子の軌道と固有エネルギー、スピン、幾何学的配置などさまざまな要素が絡み合い、単純な数列とはならない。
- 分子レベルの極めて小さな金属微粒子(金属クラスター)などで見られる現象で、ある特定の分子数の金属微粒子が他の分子数の金属微粒子と比べ特異的に安定になる現象が知られている。この分子数をマジックナンバーと呼ぶ。幾何学的配置に加え、主に分子軌道が希ガスとよく似た閉核な状態となることで起きる。希土類の希薄なガスでの例が顕著だが、ある種の金属間化合物やホウ化物では固体中に安定してクラスターを構成する。
概要
コード中になんら説明無く「*2」とか「+100」とかいった形で割り込んでくる謎数字をマジックナンバーという。場合によっては文字列などにも使う。マジックナンバーで値を決め打ちしてコーディングすることをハードコーディングと呼ぶ。
マジックナンバーは、書いた本人には意図が分かっていても読む側にとっては解読に一手間かかる。後から自分で読み返して何の数字だか思い出せないのもよくある話。また、その数字を変更する必要が生じた場合、その数字が複数箇所で使われていると、それらすべてを変更しなければならない。これは手間が掛かるだけではなく、変更し忘れによってバグを埋め込んでしまう可能性すら有る。
これらの理由から、一般的にマジックナンバーは使うべきではない。一見してどんなに自明の内容であっても、必ず一端定数に代入するのがプログラミングのマナーである。もちろん定数名もちゃんと意味のある内容でなくてはならない。可読性のみならず、バグを出さないという面でも定数代入が推奨される。ちょっとした違いであるが、小さな気遣いが素人と玄人の分かれ目というやつなのだ。
具体例
例えば、以下に示した消費税を計算する関数consumption_taxの擬似コードについて考えてみよう。
function consumption_tax(price) {
return price * 0.05;
}
この場合、「0.05」がマジックナンバーであり、消費税税率が変わってしまった場合(そして残念ながらそれはきっと実現してしまうだろう)に簡単に対応できなくなってしまう。このコードは定数consumption_tax_rateを用いることによって、次のように書き換えられる。
const consumption_tax_rate = 0.05
function consumption_tax(price) {
return price * consumption_tax_rate;
}
このようにすれば、consumption_tax関数では消費税率を用いて消費税を計算しているということがより明確に示される。また、消費税率が変わってしまった場合には、consumption_tax_rateの値を変えるだけで良い。
関連項目
- 3
- 0pt