前言
在java-cm中看到使用了魔法数,发现这些魔法数是其他类定义的常量.
重构代码,将这些魔法数,更新为其他类的常量定义。
如果是c++,是使用类域作用符. e.g. class_A::MY_CONST
在java中,没有类域作用符, 用的是’.'符号 e.g. class_A.MY_CONST
实验
// @file class_A.java
package test;
import java.io.*;
import test.class_B;
// 如果 System.out.printf 出现奇怪的编译错误
// 在eclipse中右击工程节点, 选择最后一项"属性"
// 选择 "Java Compiler"
// 在右面面板中去掉勾选"Use compliance from execution envronment on the 'Java Build Path'"
// 在‘Compiler compliance level’ 下拉框中,选择jdk1.7
public class class_A {
public class_A() {
// TODO Auto-generated constructor stub
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int i_val = class_B.CLASS_VER;
System.out.printf("CLASS_VER = %d\n", i_val);
System.out.printf("CLASS_VER is %d\n", class_B.CLASS_VER);
/*
* run result
* CLASS_VER = 2018
* CLASS_VER is 2018
*/
}
}
// @file class_B.java
package test;
public class class_B {
public class_B() {
// TODO Auto-generated constructor stub
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
public static final int CLASS_VER = 2018;
}