在Java的入門過程中,我們首先要養(yǎng)成一個良好的編寫代碼習(xí)慣。那么,了解清楚Java的編碼規(guī)范就顯得尤為必要了。編碼格式不僅僅是美不美觀的問題。這里我們可以試想一下,如果在Java開發(fā)中編碼不規(guī)范,容易出現(xiàn)bug不說,而且后續(xù)還難以維護(hù)。因此,遵守編碼規(guī)范可以讓代碼的風(fēng)格好像是一個人寫出來的,即使是有很多人參與這個開發(fā)項目。
1、源文件基礎(chǔ) 源文件以其最頂層的類名來命名,大小寫敏感,文件擴(kuò)展名為 .java。源文件編碼格式為UTF-8。除了行結(jié)束符序列,ASCII水平空格字符(0x20,即空格)是源文件中唯一允許出現(xiàn)的空白字符,這意味著所有其它字符串中的空白字符都要進(jìn)行轉(zhuǎn)義;制表符不用于縮進(jìn)。對于具有特殊轉(zhuǎn)義序列的任何字符(\b, \t, \n, \f, \r, ", '及),我們使用它的轉(zhuǎn)義序列,而不是相應(yīng)的八進(jìn)制(比如 \012)或Unicode(比如 \u000a)轉(zhuǎn)義。對于剩余的非ASCII字符,是使用實際的Unicode字符(比如∞),還是使用等價的Unicode轉(zhuǎn)義符(比如\u221e),取決于哪個能讓代碼更易于閱讀和理解。 2、源文件結(jié)構(gòu) 一個源文件包含(按順序地):許可證或版權(quán)信息;package語句;import語句;一個頂級類。以上每個部分之間用一個空行隔開。如果一個文件包含許可證或版權(quán)信息,那么它應(yīng)當(dāng)被放在文件最前面。package語句不換行,列限制(4.4節(jié))并不適用于package語句。import不要使用通配符,不要換行。 3、格式 大括號與 if,else,for,do,while語句一起使用,即使只有一條語句(或是空),也應(yīng)該把大括號寫上。對于非空塊和塊狀結(jié)構(gòu),大括號遵循Kernighan和Ritchie風(fēng)格,左大括號前不換行;左大括號后換行;右大括號前換行;如果右大括號是一個語句、函數(shù)體或類的終止,則右大括號后換行; 否則不換行。例如,如果右大括號后面是else或逗號,則不換行。一個空的塊狀結(jié)構(gòu)里什么也不包含,大括號可以簡潔地寫成 {},不需要換行。例外:如果它是一個多塊語句的一部分(if/else 或 try/catch/finally) ,即使大括號內(nèi)沒內(nèi)容,右大括號也要換行。每當(dāng)開始一個新的塊,縮進(jìn)增加2個空格,當(dāng)塊結(jié)束時,縮進(jìn)返回先前的縮進(jìn)級別??s進(jìn)級別適用于代碼和注釋。 4、空白 以下情況需要使用一個空行:類內(nèi)連續(xù)的成員之間:字段,構(gòu)造函數(shù),方法,嵌套類,靜態(tài)初始化塊,實例初始化塊;在函數(shù)體內(nèi),語句的邏輯分組間使用空行;類內(nèi)的第一個成員前或最后一個成員后的空行是可選;要滿足本文檔中其他節(jié)的空行要求。除了語言需求和其它規(guī)則,并且除了文字,注釋和Javadoc用到單個空格,單個ASCII空格也出現(xiàn)在以下幾個地方:分隔任何保留字與緊隨其后的左括號( ()(如 if,forcatch等);分隔任何保留字與其前面的右大括號( })(如 else,catch)等等。 5、命名約定 對所有標(biāo)識符都通用的規(guī)則,標(biāo)識符只能使用ASCII字母和數(shù)字,因此每個有效的標(biāo)識符名稱都能匹配正則表達(dá)式 \w+。類名都以 UpperCamelCase風(fēng)格編寫,方法名都以 lowerCamelCase風(fēng)格編寫;常量名命名模式為 CONSTANT_CASE,全部字母大寫,用下劃線分隔單詞;非常量字段名以 lowerCamelCase風(fēng)格編寫;參數(shù)名以 lowerCamelCase風(fēng)格編寫;比起其它類型的名稱,局部變量名可以有更為寬松的縮寫。 6、編程實踐 只要是合法的,就把 @Override注解給用上。使用類名調(diào)用靜態(tài)的類成員,而不是具體某個對象或表達(dá)式。極少會去重寫 Object.finalize。 上面我們談?wù)摰?/span>Java編碼規(guī)范,可以把它看做是一種需要盡量去做的標(biāo)準(zhǔn)守則,而不是強(qiáng)制的命令要求。最后,希望大家都能寫出優(yōu)美動人,而有準(zhǔn)確的編碼。 |
|