Closed. This question is opinion-based。它当前不接受答案。












想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。

1年前关闭。



Improve this question




什么是魔数?

为什么要避免呢?

在某些情况下合适吗?

最佳答案

魔数(Magic Number)是代码中数字的直接用法。

例如,如果您拥有(使用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中设置密码字段大小的情况。如果我使用魔数(Magic Number),则每当最大大小更改时,我都必须在两个代码位置中进行更改。如果我忘记了一个,将会导致不一致。

JDK充满了IntegerCharacterMath类中的示例。

PS:诸如FindBugs和PMD之类的静态分析工具会检测代码中魔数(Magic Number)的使用,并提出重构建议。

关于language-agnostic - 什么是魔数(Magic Number),为什么不好呢? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47882/

10-11 15:30