很多開發者在這個檢查方面都有問題,這可以從結果程式碼中看到。我看到過這樣的程式碼:
private static final int FOUR =4;
以及
private static final int FOUR =5;
和我最喜歡的(我可不會這麼做!)
firstname = rs.getString(1); lastname = rs.getString(2); city = rs.getString(2+1); zip = rs.getString(2+2); country = rs.getString(2+2+1);
是還有另一個引發討論的不同案例。它是關於顯而易見的常量,如把小數轉換成百分比的100,或者在位元組數和Kb數之間轉換的1024。一些人認為它們不是魔數(或者不是那麼糟糕的魔數),因為它們的含義很明顯並且不會改變。
關於這一點我不同意。而且,任何時候我都會把它們寫成常量。下面是原因:
1、 它的含義不是顯而易見的。value*100是什麼意思?是把一個小數轉換成百分數?還是把一個以米為單位的長度,轉換成釐米?或者是一個數乘以g*g的 粗略近似數,其中g是地球上的重力加速度?又或者是我把某個數乘以一個陣列的長度,而長度恰好是100?說不清楚。使用一個恰當名稱的常量就能搞定。
2、是的,我承認大多數這樣的常量不會改變。但是定義常量(方法、類)的目的不(僅僅)是為了後面的變化,而是為了更容易閱讀、理解和推理。因此在未來值是否會改變的問題是完全不相干的。
3、(這是我在大多數討論中沒有列出的論據)我只是不想去思考它,也不想讓別人思考它。我見過數十個,很可能上百個例子,一個恰當命名的常量會極大地幫助理解一段程式碼。我很少看到它損害可讀性的例子,並且沒有一個會嚴重損害可讀性。
注意:僅僅因為它是一個常量,並不意味著它必須被公開,包括類級別的欄位。如果它只用在一個單獨的方法中,使用區域性變數就夠了。
原文連結: dzone 翻譯: ImportNew.com - shenggordon
相關閱讀
評論(1)