Closed. This question is opinion-based。它当前不接受答案。
想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
1年前关闭。
Improve this question
什么是魔数?
为什么要避免呢?
在某些情况下合适吗?
这应该重构为:
它提高了代码的可读性,并且更易于维护。想象一下在GUI中设置密码字段大小的情况。如果我使用魔数(Magic Number),则每当最大大小更改时,我都必须在两个代码位置中进行更改。如果我忘记了一个,将会导致不一致。
JDK充满了
PS:诸如FindBugs和PMD之类的静态分析工具会检测代码中魔数(Magic Number)的使用,并提出重构建议。
想改善这个问题吗?更新问题,以便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充满了
Integer
,Character
和Math
类中的示例。PS:诸如FindBugs和PMD之类的静态分析工具会检测代码中魔数(Magic Number)的使用,并提出重构建议。
关于language-agnostic - 什么是魔数(Magic Number),为什么不好呢? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47882/
10-11 15:30