【まじっくなんばー】
マジックナンバー とは?
最終更新:
💡 コードに突然現れる「意味不明な数字」、定数として名前を付けよう
ソースコードに意味の説明なく直接書かれた数値のこと。何を表すか読み取りにくく、変更漏れの原因にもなるため、意味のある名前の定数に置き換えるのが一般的。
📌 このページのポイント
マジックナンバーってどんな問題があるの?
「if (type == 2)」というコードを見て、「2」が何を意味するかすぐにわかる?書いた本人でも時間がたつと思い出せないことがあるよね。「if (type == USER_TYPE_ADMIN)」なら意図が明確になるよ。
どう直せばいいの?
意味のある名前の定数を定義して置き換えるんだ。JavaScriptなら「const MAX_RETRY_COUNT = 3」のようにね。リファクタリングの定番手法としても知られていて、読みやすくなるうえ、値を変えるときも1か所直すだけで済むよ。
ファイルのマジックナンバーは別?
マジックナンバーを見つけるにはどうすればいいの?
数字を全部定数にすればいいの?
もっと詳しく知りたい人へ
定数にしたのに「NUMBER_THREE = 3」だと意味がないのはなぜ?
名前が値そのものを言い換えているだけで、「何のための3なのか」が伝わらないからだよ。たとえば再試行回数なら MAX_RETRY_COUNT、成人年齢なら ADULT_AGE のように、値の役割を名前にしよう。そうすれば、あとで値を4に変えても名前と中身が食い違わないんだ。
まとめ:ざっくりこれだけ覚えればOK!
マジックナンバーって出てきたら「コードに意味の説明なく直接書かれた数値。名前の付いた定数にすると読みやすい」と思えばOK!
📖 おまけ:英語の意味
「Magic Number」 = 魔法の数字
💬 「魔法のように突然現れる(意味のわからない)数字」というイメージだよ。ファイル形式の識別に使う「マジックナンバー(マジックバイト)」は同じ呼び名の別概念なんだ