Java冷知識:教你識別代碼中的魔法值

什麼是魔法值?

有一種說法解釋為

代碼中直接出現的數值,只有在這個數值記述的那部分代碼中才能明確瞭解其含義。

Java冷知識:教你識別代碼中的魔法值

如果按照以上說法,那麼下圖這種情況如何解釋呢?

Java冷知識:教你識別代碼中的魔法值

小編認為這種說法將魔法值的表示範圍縮小至“數值”了,更加確切的解釋應為“代碼中直接出現的未經定義的常量,只有在這個常量記述的那部分代碼中才能明確瞭解其含義”。

Java冷知識:教你識別代碼中的魔法值

魔法值有什麼危害?

魔法值的出現使代碼的可讀性大大降低。

主要體現在以下兩個方面:

Java冷知識:教你識別代碼中的魔法值

一則如果同樣的常量多次出現時,到底這些常量是否有相同的含義呢,這一點時間長了怕是代碼作者也說不清楚。

二則如果本來應該使用相同常量的地方,在修改時一旦沒有將所有需要修改的地方一一修改,將會導致代碼BUG,如果遺留需要修改的地方也很難發現。

如何解決魔法值相關問題?

避免出現魔法值是解決魔法值相關問題的銀彈。有兩種方法可以避免代碼中出現魔法值:

將魔法值定義為常量(static final),請看如下實例:

Java冷知識:教你識別代碼中的魔法值

將魔法值定義為枚舉enums,各位不妨自行嘗試下這種方式,小編在這裡就不貼代碼獻醜了。

以上兩種方法有異曲同工之妙,本質上都是將變量

語義化

如果你覺得本文對你有些許幫助,歡迎關注收藏轉發


分享到:


相關文章: