什么是魔法值?
有一种说法解释为
代码中直接出现的数值,只有在这个数值记述的那部分代码中才能明确了解其含义。
如果按照以上说法,那么下图这种情况如何解释呢?
小编认为这种说法将魔法值的表示范围缩小至“数值”了,更加确切的解释应为“代码中直接出现的未经定义的常量,只有在这个常量记述的那部分代码中才能明确了解其含义”。
魔法值有什么危害?
魔法值的出现使代码的可读性大大降低。 主要体现在以下两个方面:
一则如果同样的常量多次出现时,到底这些常量是否有相同的含义呢,这一点时间长了怕是代码作者也说不清楚。
二则如果本来应该使用相同常量的地方,在修改时一旦没有将所有需要修改的地方一一修改,将会导致代码BUG,如果遗留需要修改的地方也很难发现。
如何解决魔法值相关问题?
避免出现魔法值是解决魔法值相关问题的银弹。有两种方法可以避免代码中出现魔法值:
将魔法值定义为常量(static final),请看如下实例:
将魔法值定义为枚举enums,各位不妨自行尝试下这种方式,小编在这里就不贴代码献丑了。
以上两种方法有异曲同工之妙,本质上都是将变量
语义化。如果你觉得本文对你有些许帮助,欢迎关注、收藏和转发