日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 互聯網 > 吐槽一下項目中的代碼壞味道:濫用java常量

吐槽一下項目中的代碼壞味道:濫用java常量

來源:程序員人生   發布時間:2014-09-18 09:07:43 閱讀次數:2004次

我們的項目中是否充斥著類似下面的代碼呢?定義一個專門存放常量的java類(接口),很多其他類依賴該常量類。

public interface IConstant { int ZERO = 0; String EMPTY_STRING = ""; }

使用該常量的代碼,大致具有如下形式:

List<String> list = new ArrayList<String>(IConstant.ZERO); if(IConstant.ZERO == list.size()) { } int[] array = {1,2,3} array[IConstant.ZERO]; if(IConstant.EMPTY_STRING.equals(name)) { }

為什么要把0和""定義成一個常量呢?這是沒有正確理解到底什么是魔鬼數字和硬編碼。使用常量,出于如下幾個原因:

1、為了可讀性,一個好的名字顯然比一串寫死的數字更容易理解。

2、避免冗余,讓代碼更容易修改,實現一處該,處處該的效果。

3、避免程序員手寫常量,不小心寫錯。比如多寫了個0或者是少寫了個0等。

4、常量必須是被多個地方使用,而且在不同的地方代表相同的含義。

如果定義的常量沒有達到這4個要求中的任意一個,那么可以說這個常量的使用是沒有意義的,會導致另一中代碼壞味道:沒有必要的復雜性。

上面我們舉的例子中:0代表的是列表的長度,也代表數組的第一個元素。不滿足第1個要求,因為對于程序員來說,這只是最基本的語法,額外定義變量不能提高可讀性;不滿足第2個要求,因為這些東西是不會變的,不存在修改的可能;不滿足第3個要求,有IDE的編譯提示,而且常量0并不復雜,不存在寫錯的可能;不滿足第4個要求,因為0一會兒代表長度,一會兒代表數組索引,根本沒有辦法給0取一個有意義的名稱。


第4點需要特別注意:一個常量名稱只能代表一個業務含義!讓列表長度和數組索引“復用”常量值0,這種做法非常不好。雖然減少了常量的個數,貌似實現了"復用",實際上是增加了代碼之間的耦合。舉個極端的例子,假如java的語法發生重大改變,數組的第一個元素從1開始而不是0,那我們能將常量ZERO修改成1嗎?顯然不能,如果修改了,是能夠保證數組的正確使用,但是會導致列表長度的判斷錯誤。這種場景下,我們定義的常量ZERO完全沒有意義。

 

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 国产成年人 | 成人av电影在线观看 | 国产精品二区在线观看 | 国产黄色一区二区三区 | 97国产在线视频 | 国产精品久久久影院 | 亚洲一区久久 | 91精品久久久久久久久久入口 | 欧美日产国产成人免费图片 | 成人一区视频 | 欧美成人一区二区三区片免费 | 久久精品视频在线观看 | 爱情岛论坛av | 久久亚洲一区 | 午夜精品久久久久久不卡av | 成人在线免费av | 国产这里只有精品 | 欧美精品一区二区久久 | 国产福利资源 | 黄色三级视频 | 久久不射网 | 久久久久国产精品一区三寸 | 免费毛片在线 | 国产成人在线视频播放 | 国产福利电影在线 | 青草福利 | 久久久久亚洲精品国产 | 成人欧美一区二区三区黑人免费 | av网站入口 | 7777视频| 精品国产乱码久久久久久蜜柚 | 国产精品二区三区 | www99re| 日日噜噜噜夜夜爽爽狠狠视频97 | 免费av一区二区三区 | 亚洲高清自拍 | 91视频一区二区 | 亚洲一区二区精品视频 | 逼逼网 | 日韩欧美成人一区二区 | 日韩精品影片 |