java什么時候用常量?
寫代碼是一種藝術(shù),結(jié)構(gòu)層次好的代碼可以少出bug,提高效率。而在Java編程中,什么時候用常量,什么時候用枚舉呢?曾經(jīng)的我也迷茫過。當(dāng)然,經(jīng)歷了多年的編程之后,也陸陸續(xù)續(xù)有了自己的思考。
在我看來,具備一定規(guī)則的常量集合需要使用枚舉類,既包含一年四季,一周七天這種自然枚舉,也包含在編譯時就知道所有可能值的其它情況,比如加減乘除等運算。枚舉值不必是固定的,可以在后面繼續(xù)添加。
而對于毫無規(guī)則歸類可言的一些常量:如SUCCUSS字符串、密鑰串、路徑等等這些,可以放在一個常量類里面糅在一起。在《Effective Java》一書中,作者建議使用一般類加私有構(gòu)造方法的方式,而在 sonar 代碼質(zhì)量掃描中,也將該方式定為常量類處理的推薦方式。
而相對于常量類,枚舉的優(yōu)點是很明顯的。枚舉更具可讀性、更安全,并且功能更強大。許多枚舉不需要明顯的構(gòu)造器和成員變量,而有些枚舉通過為每個枚舉值綁定數(shù)據(jù),并且為這些數(shù)據(jù)提供函數(shù),可以添加額外的功能,枚舉值也可以直接用來進行數(shù)據(jù)庫存儲。
總而言之,建議在具備相關(guān)性的前提下,能使勇枚舉的地方一定要要用枚舉,如果無法使用枚舉時,建議使用帶有私有構(gòu)造函數(shù)的常量類。
作者:夕陽雨晴,歡迎關(guān)注我的頭條號:偶爾美文,主流Java,為你講述不一樣的碼農(nóng)生活。