マジックナンバーとは
- プログラム中に突如出現するマジカルでミラクルでドリームファンタジーな数字。本稿で解説。
- プロ野球において、上位チームが下位チームに対して「上位でシーズンを終了することが確定するまであと何勝しなければいけないか」を表す数字。日本では単に「マジック」と呼ぶことが多い。
- 2003年元日発売、KICK THE CAN CREWのメジャー2ndアルバム。
- 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の値を変えるだけで良い。
関連項目
http://dic.nicomoba.jp/k/a/%E3%83%9E%E3%82%B8%E3%83%83%E3%82%AF%E3%83%8A%E3%83%B3%E3%83%90%E3%83%BC


ページ番号: 4654389
リビジョン番号: 1463463
読み:マジックナンバー
初版作成日: 11/06/15 02:03 ◆ 最終更新日: 12/03/08 13:34
編集内容についての説明/コメント: 微修正
記事編集 / 編集履歴を閲覧 / Twitterで紹介





JASRAC許諾番号: 9011622001Y31015
ヘッダー:固定
ヘッダー:追従