0.前期提要
闲逛至老哥博客文章 可别在代码中写那么多魔法值了,脑壳疼!, 遂模仿,学习一下markdown语法写博客
1. 前言
重构老代码中遇到了不少类似下面这种写法:
public void attend(String value) {
if ("0".equals(value)) {
//todo
} else if ("1".equals(value)) {
//todo
} else {
//todo
}
}
脑壳疼!从Java语法上无懈可击,但是从业务上却让人无法理解其中0
和1
的含义它们统称为魔法值 。对于上面的代码我们往往需要通过上下文推断出来逻辑,如果是非常复杂的业务或者10年前的代码那就更惨了,搞不好文档也没有。为了可读性,所以我们要尽量避免出现魔法值。今天就来讲几种避免魔法值的操作。
2. 避免魔法值的一些操作
一般魔法值都是不经常变动的。对于魔法值的处理要结合业务和作用域
2.1 静态常量
如果该值的作用域在一个类中或者同一个包下,一般可以使用静态常量来解决。
private static final String FEMALE = "0";
private static final String MALE = "1";
public void attend(String value) {
if (FEMALE.equals(value)) {
//todo
} else if (MALE.equals(value)) {
//todo
} else {
//todo
}
}