マジックナンバー単語

マジックナンバー

  • 3
  • 0
掲示板をみる(13)
  • twitter
  • facebook
  • はてな
  • LINE
  • ほめる(3)
  •  
  •  
  •  
  •  
  • その他

マジックナンバーとは

  1. プログラム中に突如出現するマジカルミラクルでドリームファンタジーな数字。本稿で解説。
  2. プロ野球において、上位チームが下位チームに対して「上位でシーズンを終了することが確定するまであと何勝しなければいけないか」を表す数字。日本では単に「マジック」と呼ぶことが多い。
  3. 2003年元日発売、KICK THE CAN CREWメジャー2ndアルバム
  4. 荒井チェリー漫画2004年COMICぎゅっと!』(平和出版)に連載、単行本は未刊行。
  5. 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の値を変えるだけで良い。

関連項目

この記事を編集する

掲示板

  • 11ななしのよっしん

    2016/10/24(月) 15:03:09 ID: ySxVStTPDe

    マジックはオマジナイとか呪文とか訳すといい
    魔法じゃなくて「他人には意味がわからない」と皮るときの用法

    ちなみに消費税アップは20年くらい前に実例があるから
    まともな業者ならその時に税率再引上を組み込んでたはず…だけど
    あまりに間がきすぎた

    そして軽減税率魔物がおまいらを襲う

  • 12ななしのよっしん

    2017/09/30(土) 19:04:17 ID: Nv/azgk88i

    マジックナンバー7±2
    実際は4±1らしい

  • 13ななしのよっしん

    2019/03/17(日) 23:10:05 ID: 2odg4Ev2cy

    10%来ますね…

おすすめトレンド

急上昇ワード改

最終更新:2021/06/24(木) 23:00

ほめられた記事

最終更新:2021/06/24(木) 23:00

ウォッチリストに追加しました!

すでにウォッチリストに
入っています。

OK

追加に失敗しました。

OK

追加にはログインが必要です。

           

ほめた!

すでにほめています。

すでにほめています。

ほめるを取消しました。

OK

ほめるに失敗しました。

OK

ほめるの取消しに失敗しました。

OK

ほめるにはログインが必要です。

タグ編集にはログインが必要です。

タグ編集には利用規約の同意が必要です。

TOP