Rubyと仲良くなりたい٩( 'ω' )و

Rubyと仲良くなりたい日々のこと

マジックナンバー

マジックナンバーとは

書いて字のごとく、魔法の数字と言う意味。 プログラミングでマジックナンバーとは、何の数字かよくわからない数字のこと。

よくわからない数字とは?

例えば、こういう式があるとします。

apple = 100
tax_included_price = (apple *1.03).to_i
print "りんごの税込価格は#{tax_included_price }"

流石にここまでコンパクトだと(apple *1.03).to_iが消費税込みの金額を表していると推測出来ますが…。

例えば、ここだけを切り取ると、1.03が何の数字なのか謎です。

(apple *1.03).to_i

1.03と言うのは、消費税導入時の税率をあえて使いました。 消費税導入後はしばらく税率やらお題目やらが変わるような動きはなかったので、当初ならば消費税といえば誰でも3%だとわかるよね、と言う感じだと思います。

でも、実際今わからないのです。

今、何の数字かわかっても、未来の自分や未来の共同開発者には何の数字かわからない、と思った方が良いでしょう(ということを最近学びました)。

修正してみる

マジックナンバーを用いるのは辞めて定数で定義します。

TAX_RATE = 1.03
apple = 100
tax_included_price = (apple *TAX_RATE).to_i
print "りんごの税込価格は#{tax_included_price }"

定数として定義しておくことで(apple *TAX_RATE).to_iが何なのかわかるようになります。 さらに税率が変わっても、どこを変更すべきか明確で使い回しもききやすいです。

まとめ

マジックナンバーを生み出さないように、今は何の数字かわかっても未来の自分にはわからない、自分には何の数字かわかっても他の人には何の数字かわからない、ことを認識しましょう(ということを最近学びました)。