java編碼規範——常見不規範現象

翻閱別人整理的一份《Java語言編碼規範(Java Code Conventions)》。我從其中抽出了我覺得自己會犯的錯誤,或者是閱讀代碼的時候常常遇到的問題羅列出來。自我警示而已。不能算什麼文章。

  1. 我翻閱的此文檔版權如下: 
  2.  
  3. 譯者 晨光(Morning) 
  4.  
  5. 蒐集整理:華竹技術實驗室http://sinoprise.com 
  6.  
  7. 簡介: 
  8.  
  9. 本文檔講述了Java語言的編碼規範,較之陳世忠先生《c++編碼規範》的浩繁詳盡,此文當屬短小精悍了。而其中所列之各項條款,從編碼風格,到注意事項,不單隻Java,對於其他語言,也都很有借鑑意義。因爲簡短,所以易記,大家不妨將此作爲handbook,常備案頭,逐一對驗。 
  10.  
  11. 聲明: 
  12.  
  13. 如需複製、傳播,請附上本聲明,謝謝。原文出處:http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html, 譯文出處:http://morningspace.51.net/,[email protected] 
  • 聲明:

推薦一行一個聲明,因爲這樣利於寫註釋。即:

  1. int  size;//size of XXXX 
  2. int   length;//length of  XXXX 

 

不要將不同類型的變量放在同一行。

  1. int foo ,fooarray[];//居然可以這麼幹。我從來沒幹過。。。見識了。 

比較整齊的製表符方式: 

  1. int     size;           //size of XXXX 
  2. int     length;         //length of XXXX 
  3. Object  currentyXXXX;   //currently selected XXXX 
  • 初始化

儘量在聲明局部變量的同時初始化。唯一不這麼做的理由是變量的初始值依賴於某些先前發生的計算。

 

  • 語句

簡單語句:

每行最多包含一條語句。

複合語句:

大括號可以被用於所有語句,包括單個語句。

見過有人寫switch語句 每個case後又有一對大括號。

switch語句的某個case後面不需要break的時候應該寫註釋說明。。

 

if語句總是用 {}括起來。避免使用如下容易引起錯誤的格式 

  1. if(condition) 
  2.       statement; 

 項目裏面這樣的寫法比比皆是,看着就像出門沒穿內褲一樣,感覺又危險又不舒服。 

  • 命名規則

臨時變量

整型變量常用 i j k  m n

字符型 用:c  d  e

實例變量

大小寫規則和變量相似,除了前面需要一個下劃線。

 

  • 變量賦值

避免在一個語句中給多個變量賦相同的值。比如

  1. fooBar.fChar = barFoo.lchar = ‘c’; //AVOID!! 

 

不用將賦值運算符用在容易與相等關係運算符混淆的地方.比如:

  1. if(c++ = d++){//我痛恨看到這樣的代碼,看得人都皮發麻。。 

 不要使用內嵌(embedded)賦值運算符試圖提高運算是的效率。不知道是否真的可以提高運算效率。。   這樣的代碼看着讓人崩潰。

  1. d = (a = d + c) + r; //AVOID !!

應該寫成

  1. a= b +c; 
  2. d = a + r; 
  • 返回值

讓你的程序結果符合目的。例如: 

  1. if(booleanExpression){ 
  2.       return ture; 
  3. }else
  4.       return false

完全可以寫成 。。。 

  1. return  booleanExpression; 

 

還有我曾經見過。。 這樣麼寫的。。

  1. if(!booleanExpression){ 
  2.     //語句A 
  3. }else
  4.     //語句B 

實在想不通 爲什麼不寫成 

  1. if(booleanExpression){ 
  2.      //語句B 
  3. }else
  4.      //語句A 

比較喜歡逆向思維?還是怎麼?其實也可以理解,或許是因爲項目中剛開始只需要考慮!booleanExpression的情況,而後來又有需求兩種情況都考慮。所以就產生了這樣的代碼。

類似的還有:

  1. if(condition){ 
  2.       return x; 
  3. return y; 

應該寫做:

  1. return (condition ? x : y); 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章