多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

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

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

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

我們的項目中是否充斥著類似下面的代碼呢?定義一個專門存放常量的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完全沒有意義。

 

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 在线观看男女男免费视频 | 亚洲欧美日韩国产精品一区 | 国产成人精品一区二区不卡 | 一级女性全黄久久生活片免费 | 手机看片国产欧美日韩高清 | 亚洲人xxx | 求av网址 | 女性一级全黄生活片免费看 | www一级黄色片 | 琪琪理论影院2018中文版 | 亚洲h网站 | 最新国产福利片在线观看 | 国产免费高清mv视频在线观看 | 福利在线一区 | 宇都宫紫苑99av | 浴室边摸边脱边吃奶边做视频 | 国产免费高清视频在线观看不卡 | 日朝欧美亚洲精品 | 亚洲免费成人在线 | 国产欧美精品综合一区 | 久久久久久国产精品三级 | 欧美色图另类小说 | 性xx视频| 黑人性视频 | 性欧美一级毛片 | 国产真实乱小说 | 国产精品欧美日韩一区二区 | 波多野结衣中文字 | 久久精品免费观看 | 69久久 | 伊人久久国产免费观看视频 | wwwxxx日本护士 | 国产欧美精品区一区二区三区 | 图片小说亚洲 | 色老久久精品偷偷鲁一区 | 中文字幕之中文字幕 | 日本a一级毛片免费观看 | 黑色丝袜高跟国产在线91 | 劲爆欧美精品13页 | 在线观看免费a∨网站 | 欧美综合国产精品日韩一 |