マジック・ナンバー、いかんよ!

ふと思い出した。

以前、コーディングで、マジック・ナンバーは使ったらダメだよというのを聞き、
使わないようにしてコーディングしたことがあった。

そもそも、マジック・ナンバーって何や?
と思って、会社の同僚に聞いたら、
「1」 とか 「2」 とか、
それを見ただけじゃ意味が分からない数値のことと教えられた。


その後、
「1」を条件式で、どうしても使いたいという場に遭遇した。
ただ、「1」を条件式の右辺に使って、


if (x == 1)


みたいなのを書いたら、この「1」って、何の意味?
ってなるな!
これはマジック・ナンバーや!
と思って、「1」を意味するマクロが無いか、ソース内を探してみた。

で、「IDX1」みたいなのがあったもんで、
これを使い、以下のようにした。


if (x == IDX1)


これでマジック・ナンバー回避や!
と思って、コードレビュー開催。
すると、言われました。


同僚:「このIDX1って、何?」
自分:「数値の1です。」
同僚:「何で、わざわざ、このマクロに置き換えてるの?」
自分:「マジック・ナンバーにならないようにです。」
同僚:「・・・・・・・・・」


そうです。これじゃダメなんです。
マジック・ナンバーを使ったらダメっていう意味を、
ダイレクトで数値を使ったらダメという意味だと思ってたので、
めちゃんこ恥ずかしい思いをした。


マクロで、意味の分かる名前に置き換えるか、
むしろ数値の「1」をそのまま使い、
コメントで説明を入れておけば良かったみたい。


ダメなら、なぜダメなのかを考えないと。
どんなことでも、理由があるはず。
分かってるつもりになってて、
とんでもない勘違いをしてることって、
意外と多いのかもしれない・・・


◆ビックカメラ.com