拉莫斯之舞
幻数是代码中数字的直接用法。例如,如果您有(在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中设置了密码字段的大小。如果我使用一个神奇的数字,每当最大尺寸发生变化时,我必须在两个代码位置进行更改。如果我忘了一个,这会导致不一致。JDK中满是示例,如Integer, Character和Math上课。PS:像FindBugs和PMD这样的静态分析工具可以在代码中检测到神奇数字的使用,并建议进行重构。