魔法の数字
(マジックナンバー)
`if (user_type == 1)` ... 1って何?管理者?一般?
`price = price * 1.10` ... 1.10って何?消費税?
コードの中に直接書かれた「謎の数字」。
それは、書いた本人には魔法のように機能しますが、後を引き継ぐ者には呪いとなります。
- コードのあちこちに「1.08」「1.10」が散らばっている
- ステータス管理が `status = 9` のように数字で行われている
- 「1が男、2が女」というルールが、ドキュメントにしか書いてない
- 上限値 `limit = 100` がなぜ100なのか、誰も知らない
消費税率が変わった日、あなたのシステムは広範囲で計算ミスを起こします。
01. 名前をつける、ただそれだけ
解決策は驚くほど簡単です。定数(Constant)に名前をつけるだけです。
`1.10` と書く代わりに `TAX_RATE` と書く。
`1` と書く代わりに `USER_TYPE_ADMIN` と書く。
たったこれだけで、コードは「暗号」から「文章」に変わります。
変更が必要な時も、定数の定義を1箇所変えるだけで済みます。
名前に語らせろ。
02. ドメイン知識のコード化
マジックナンバーは、ビジネスルール(ドメイン知識)がコードに埋め込まれている証拠です。
「送料が500円」というのは、宇宙の真理ではなく、ビジネス上の決定です。
これらをコードの奥深くにハードコードせず、設定ファイルやDB、
あるいは明確な定数クラスとして切り出してください。
03. Enum(列挙型)の活用
ステータス管理には、単なる定数よりも `Enum` を使いましょう。
`Status.PENDING`、`Status.APPROVED` のように、
とりうる値を制限することで、ありえない数字(`status = 999`)が入るバグをコンパイル段階で防げます。
型安全性は、最強のドキュメントです。