編碼規范可以改善軟件的可讀性,可以讓程序員盡快而徹底地理解新的代碼
如果你將源碼作為產品發布,就需要確任它是否被很好的打包并且清晰無誤。
所有的源文件都應該在開頭有一個C語言風格的注釋,其中列出類名、版本信息、日期和版權聲明:
在多數Java源文件中,第一個非注釋行是包語句。在它之后可以跟引入語句。例如:
package java.awt;
import java.awt.peer.CanvasPeer;
下表描述了類和接口聲明的各個部分以及它們出現的先后次序。參見"Java源文件范例"中一個包含注釋的例子。
|
類/接口聲明的各部分
|
注解
|
1
|
類/接口文檔注釋(/**……*/)
|
該注釋中所需包含的信息,參見"文檔注釋"
|
2
|
類或接口的聲明
|
|
3
|
類/接口實現的注釋(/*……*/)如果有必要的話
|
該注釋應包含任何有關整個類或接口的信息,而這些信息又不適合作為類/接口文檔注釋。
|
4
|
類的(靜態)變量
|
首先是類的公共變量,隨后是保護變量,再后是包一級別的變量(沒有訪問修飾符,access modifier),最后是私有變量。
|
5
|
實例變量
|
首先是公共級別的,隨后是保護級別的,再后是包一級別的(沒有訪問修飾符),最后是私有級別的。
|
6
|
構造器
|
|
7
|
方法
|
這些方法應該按功能,而非作用域或訪問權限,分組。例如,一個私有的類方法可以置于兩個公有的實例方法之間。其目的是為了更便于閱讀和理解代碼。
|
Java程序有兩類注釋:實現注釋(implementation comments)和文檔注釋(document comments)。實現注釋是那些在C++中見過的,使用/*...*/和//界定的注釋。文檔注釋(被稱為"doc comments")是Java獨有的,并由/**...*/界定。文檔注釋可以通過javadoc工具轉換成HTML文件。
實現注釋用以注釋代碼或者實現細節。文檔注釋從實現自由(implementation-free)的角度描述代碼的規范。它可以被那些手頭沒有源碼的開發人員讀懂。
注釋應被用來給出代碼的總括,并提供代碼自身沒有提供的附加信息。注釋應該僅包含與閱讀和理解程序有關的信息。例如,相應的包如何被建立或位于哪個目錄下之類的信息不應包括在注釋中。
在注釋里,對設計決策中重要的或者不是顯而易見的地方進行說明是可以的,但應避免提供代碼中己清晰表達出來的重復信息。多余的的注釋很容易過時。通常應避免那些代碼更新就可能過時的注釋。
注意:頻繁的注釋有時反映出代碼的低質量。當你覺得被迫要加注釋的時候,考慮一下重寫代碼使其更清晰。
命名規范使程序更易讀,從而更易于理解。它們也可以提供一些有關標識符功能的信息,以助于理解代碼,例如,不論它是一個常量,包,還是類。
標識符類型
|
命名規則
|
例子
|
包(Packages)
|
一個唯一包名的前綴總是全部小寫的ASCII字母并且是一個頂級域名,通常是com,edu,gov,mil,net,org,或1981年ISO 3166標準所指定的標識國家的英文雙字符代碼。包名的后續部分根據不同機構各自內部的命名規范而不盡相同。這類命名規范可能以特定目錄名的組成來區分部門(department),項目(project),機器(machine),或注冊名(login names)。
|
com.sun.eng com.apple.quicktime.v2 edu.cmu.cs.bovik.cheese
|
類(Classes)
|
命名規則:類名是個一名詞,采用大小寫混合的方式,每個單詞的首字母大寫。盡量使你的類名簡潔而富于描述。使用完整單詞,避免縮寫詞(除非該縮寫詞被更廣泛使用,像URL,HTML)
|
class Raster; class ImageSprite;
|
接口(Interfaces)
|
命名規則:大小寫規則與類名相似
|
interface RasterDelegate; interface Storing;
|
方法(Methods)
|
方法名是一個動詞,采用大小寫混合的方式,第一個單詞的首字母小寫,其后單詞的首字母大寫。
|
run(); runFast(); getBackground();
|
變量(Variables)
|
除了變量名外,所有實例,包括類,類常量,均采用大小寫混合的方式,第一個單詞的首字母小寫,其后單詞的首字母大寫。變量名不應以下劃線或美元符號開頭,盡管這在語法上是允許的。 變量名應簡短且富于描述。變量名的選用應該易于記憶,即,能夠指出其用途。盡量避免單個字符的變量名,除非是一次性的臨時變量。臨時變量通常被取名為i,j,k,m和n,它們一般用于整型;c,d,e,它們一般用于字符型。
|
char c; int i; float myWidth;
|
實例變量(Instance Variables)
|
大小寫規則和變量名相似,除了前面需要一個下劃線
|
int _employeeId; String _name; Customer _customer;
|
常量(Constants)
|
類常量和ANSI常量的聲明,應該全部大寫,單詞間用下劃線隔開。(盡量避免ANSI常量,容易引起錯誤)
|
static final int MIN_WIDTH = 4; static final int MAX_WIDTH = 999; static final int GET_THE_CPU = 1;
|