Java冷知识:教你识别代码中的魔法值

什么是魔法值?

有一种说法解释为

代码中直接出现的数值,只有在这个数值记述的那部分代码中才能明确了解其含义。

Java冷知识:教你识别代码中的魔法值

如果按照以上说法,那么下图这种情况如何解释呢?

Java冷知识:教你识别代码中的魔法值

小编认为这种说法将魔法值的表示范围缩小至“数值”了,更加确切的解释应为“代码中直接出现的未经定义的常量,只有在这个常量记述的那部分代码中才能明确了解其含义”。

Java冷知识:教你识别代码中的魔法值

魔法值有什么危害?

魔法值的出现使代码的可读性大大降低。

主要体现在以下两个方面:

Java冷知识:教你识别代码中的魔法值

一则如果同样的常量多次出现时,到底这些常量是否有相同的含义呢,这一点时间长了怕是代码作者也说不清楚。

二则如果本来应该使用相同常量的地方,在修改时一旦没有将所有需要修改的地方一一修改,将会导致代码BUG,如果遗留需要修改的地方也很难发现。

如何解决魔法值相关问题?

避免出现魔法值是解决魔法值相关问题的银弹。有两种方法可以避免代码中出现魔法值:

将魔法值定义为常量(static final),请看如下实例:

Java冷知识:教你识别代码中的魔法值

将魔法值定义为枚举enums,各位不妨自行尝试下这种方式,小编在这里就不贴代码献丑了。

以上两种方法有异曲同工之妙,本质上都是将变量

语义化

如果你觉得本文对你有些许帮助,欢迎关注收藏转发


分享到:


相關文章: