マジックナンバーとは何ですか?なぜ一部の人はそれを悪い数字だと考えるのでしょうか?質問する

マジックナンバーとは何ですか?なぜ一部の人はそれを悪い数字だと考えるのでしょうか?質問する

マジックナンバーとは何ですか?

多くのプログラマーがそれらを避けるようにアドバイスするのはなぜでしょうか?

ベストアンサー1

マジックナンバーとは、コード内で数字を直接使用することです。

たとえば、次のような場合 (Java の場合):

public class Foo {
    public void setPassword(String password) {
         // don't do this
         if (password.length() > 7) {
              throw new InvalidArgumentException("password");
         }
    }
}

これを次のようにリファクタリングする必要があります。

public class Foo {
    public static final int MAX_PASSWORD_SIZE = 7;

    public void setPassword(String password) {
         if (password.length() > MAX_PASSWORD_SIZE) {
              throw new InvalidArgumentException("password");
         }
    }
}

コードの可読性が向上し、メンテナンスも容易になります。GUI でパスワード フィールドのサイズを設定する場合を想像してください。マジック ナンバーを使用すると、最大サイズが変わるたびに、2 つのコードの場所を変更する必要があります。1 つを忘れると、不整合が発生します。

JDK にはInteger、、、Characterクラスのような例が満載ですMath

PS: FindBugs や PMD などの静的解析ツールは、コード内のマジックナンバーの使用を検出し、リファクタリングを提案します。

おすすめ記事