Java代碼編寫規(guī)范_第1頁
Java代碼編寫規(guī)范_第2頁
Java代碼編寫規(guī)范_第3頁
Java代碼編寫規(guī)范_第4頁
Java代碼編寫規(guī)范_第5頁
已閱讀5頁,還剩52頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、JAVAJAVA代碼規(guī)范代碼規(guī)范版權(quán)所有為什么要有編碼規(guī)范為什么要有編碼規(guī)范 編碼規(guī)范對于程序員而言尤為重要,有以下幾個原因編碼規(guī)范對于程序員而言尤為重要,有以下幾個原因: - 一個軟件的生命周期中,一個軟件的生命周期中,80%的花費在于維護的花費在于維護- 幾乎沒有任何一個軟件,在其整個生命周期中,均由幾乎沒有任何一個軟件,在其整個生命周期中,均由最初的開發(fā)人員來維護最初的開發(fā)人員來維護- 編碼規(guī)范可以改善軟件的可讀性,可以讓程序員盡快編碼規(guī)范可以改善軟件的可讀性,可以讓程序員盡快而徹底地理解新的代碼而徹底地理解新的代碼- 如果你將源碼作為產(chǎn)品發(fā)布,就需要確任它是否被很如果你將源碼作為產(chǎn)品發(fā)

2、布,就需要確任它是否被很好的打包并且清晰無誤。好的打包并且清晰無誤。文件后綴文件后綴 Java程序使用下列文件后綴:程序使用下列文件后綴: 文件類別 文件后綴 Java源文件源文件 .java Java字節(jié)碼文件字節(jié)碼文件 .class文件組織文件組織 一個文件由被空行分割而成的段落以及標識每一個文件由被空行分割而成的段落以及標識每個段落的可選注釋共同組成個段落的可選注釋共同組成 超過超過2000行的程序難以閱讀,應(yīng)該盡量避免行的程序難以閱讀,應(yīng)該盡量避免 每個每個Java源文件都包含一個單一的公共類或接源文件都包含一個單一的公共類或接口口.若私有類和接口與一個公共類相關(guān)聯(lián),可以若私有類和接口

3、與一個公共類相關(guān)聯(lián),可以將它們和公共類放入同一個源文件。公共類必將它們和公共類放入同一個源文件。公共類必須是這個文件中的第一個類或接口。須是這個文件中的第一個類或接口。 開頭注釋開頭注釋 所有的源文件都應(yīng)該在開頭有一個所有的源文件都應(yīng)該在開頭有一個C語言風格的注釋,語言風格的注釋,其中列出類名、版本信息、日期和版權(quán)聲明其中列出類名、版本信息、日期和版權(quán)聲明 ,例如:例如: /* * Classname * * Version info * * Copyright notice */縮進排版縮進排版 4個空格常被作為縮進排版的一個單位。縮進的確切解釋并未詳個空格常被作為縮進排版的一個單位??s進的

4、確切解釋并未詳細指定細指定(空格空格 vs. 制表符制表符)。一個制表符等于。一個制表符等于8個空格個空格(而非而非4個個)。 行長度 盡量避免一行的長度超過盡量避免一行的長度超過80個字符,因為很多終端和個字符,因為很多終端和 工具不能工具不能很好處理之。很好處理之。 注意 用于文檔中的例子應(yīng)該使用更短的行長,長度一般不超過用于文檔中的例子應(yīng)該使用更短的行長,長度一般不超過70個字個字符符 換行換行 當一個表達式無法容納在一行內(nèi)時,可以依據(jù)如下一當一個表達式無法容納在一行內(nèi)時,可以依據(jù)如下一般規(guī)則斷開之:般規(guī)則斷開之: - 在一個逗號后面斷開在一個逗號后面斷開- 在一個操作符前面斷開在一個操

5、作符前面斷開- 寧可選擇較高級別寧可選擇較高級別(higher-level)的斷開,而非較低級的斷開,而非較低級別別(lower-level)的斷開的斷開- 新的一行應(yīng)該與上一行同一級別表達式的開頭處對齊新的一行應(yīng)該與上一行同一級別表達式的開頭處對齊- 如果以上規(guī)則導致你的代碼混亂或者使你的代碼都堆如果以上規(guī)則導致你的代碼混亂或者使你的代碼都堆擠在右邊,那就代之以縮進擠在右邊,那就代之以縮進8個空格。個空格。 換行(例子)換行(例子)以下是斷開方法調(diào)用的一些例子:以下是斷開方法調(diào)用的一些例子:function(longExpression1, longExpression2, longExpr

6、ession3, longExpression4, longExpression5); var = function1(longExpression1, function2(longExpression2, longExpression3);斷開方法調(diào)用的一些例子斷開方法調(diào)用的一些例子 if語句的換行通常使用8個空格的規(guī)則,因為常規(guī)縮進(4個空格)會使語句體看起來比較費勁,例如: if (condition1 & condition2) | (condition3 & condition4) |!(condition5 & condition6) /BAD WRAPS

7、doSomethingAboutIt(); /MAKE THIS LINE EASY TO MISS斷開方法調(diào)用的一些例子斷開方法調(diào)用的一些例子推薦使用如下的斷開方式推薦使用如下的斷開方式 if (condition1 & condition2) | (condition3 & condition4) | ! (condition5 & condition6) doSomethingAboutIt();/或者使用如下方式 if (condition1 & condition2) | (condition3 & condition4) | ! (condi

8、tion5 & condition6) doSomethingAboutIt();注釋注釋 注釋應(yīng)被用來給出代碼的總括,并提供代碼自注釋應(yīng)被用來給出代碼的總括,并提供代碼自身沒有提供的附加信息。身沒有提供的附加信息。注釋應(yīng)該僅包含與閱讀和理解程序有關(guān)的信息注釋應(yīng)該僅包含與閱讀和理解程序有關(guān)的信息。例如,相應(yīng)的包如何被建立或位于哪個目錄。例如,相應(yīng)的包如何被建立或位于哪個目錄下之類的信息不應(yīng)包括在注釋中下之類的信息不應(yīng)包括在注釋中注釋注釋Java程序有兩類注釋:實現(xiàn)注釋和文檔注釋。程序有兩類注釋:實現(xiàn)注釋和文檔注釋。 實現(xiàn)注釋是那些在實現(xiàn)注釋是那些在C+中見過的,使用中見過的,使用/*.

9、*/和和/界界定的注釋定的注釋 文檔注釋是文檔注釋是Java獨有的,并由獨有的,并由/*.*/界定。文檔注釋界定。文檔注釋可以通過可以通過javadoc工具轉(zhuǎn)換成工具轉(zhuǎn)換成HTML文件文件 。 文檔注釋從實現(xiàn)自由的角度描述代碼的規(guī)范。它可以文檔注釋從實現(xiàn)自由的角度描述代碼的規(guī)范。它可以被那些手頭沒有源碼的開發(fā)人員讀懂。被那些手頭沒有源碼的開發(fā)人員讀懂。 注釋注釋注釋應(yīng)被用來給出代碼的總括,并提供代碼自身沒有提供的附加注釋應(yīng)被用來給出代碼的總括,并提供代碼自身沒有提供的附加信息。在注釋里,對設(shè)計決策中重要的或者不是顯而易見的地方信息。在注釋里,對設(shè)計決策中重要的或者不是顯而易見的地方進行說明是可

10、以的,但應(yīng)避免提供代碼中己清晰表達出來的重復進行說明是可以的,但應(yīng)避免提供代碼中己清晰表達出來的重復信息。多余的的注釋很容易過時。通常應(yīng)避免那些代碼更新就可信息。多余的的注釋很容易過時。通常應(yīng)避免那些代碼更新就可能過時的注釋。能過時的注釋。注意:頻繁的注釋有時反映出代碼的低質(zhì)量。當你覺得被迫要加注意:頻繁的注釋有時反映出代碼的低質(zhì)量。當你覺得被迫要加注釋的時候,考慮一下重寫代碼使其更清晰。注釋的時候,考慮一下重寫代碼使其更清晰。注釋不應(yīng)寫在用星號或其他字符畫出來的大框里。注釋不應(yīng)包括注釋不應(yīng)寫在用星號或其他字符畫出來的大框里。注釋不應(yīng)包括諸如制表符和回退符之類的特殊字符。諸如制表符和回退符之類

11、的特殊字符。實現(xiàn)注釋的格式實現(xiàn)注釋的格式 程序可以有程序可以有4種實現(xiàn)注釋的風格:種實現(xiàn)注釋的風格: 塊塊 單行單行 尾端尾端 行末行末 塊注釋塊注釋 塊注釋通常用于提供對文件,方法,數(shù)據(jù)結(jié)構(gòu)和算法的描述。塊塊注釋通常用于提供對文件,方法,數(shù)據(jù)結(jié)構(gòu)和算法的描述。塊注釋被置于每個文件的開始處以及每個方法之前。它們也可以被注釋被置于每個文件的開始處以及每個方法之前。它們也可以被用于其他地方,比如方法內(nèi)部。在功能和方法內(nèi)部的塊注釋應(yīng)該用于其他地方,比如方法內(nèi)部。在功能和方法內(nèi)部的塊注釋應(yīng)該和它們所描述的代碼具有一樣的縮進格式和它們所描述的代碼具有一樣的縮進格式塊注釋之首應(yīng)該有一個空行,用于把塊注釋和

12、代碼分割開來。塊塊注釋之首應(yīng)該有一個空行,用于把塊注釋和代碼分割開來。塊注釋可以以注釋可以以/*-開頭,這樣開頭,這樣indent(1)就可以將之識別為一個代碼塊就可以將之識別為一個代碼塊的開始,而不會重排它比如:的開始,而不會重排它比如: /* * Here is a block comment. */單行注釋單行注釋短注釋可以顯示在一行內(nèi),并與其后的代碼具有一樣的縮進層級短注釋可以顯示在一行內(nèi),并與其后的代碼具有一樣的縮進層級 如果一個注釋不能在一行內(nèi)寫完,就該采用塊注釋如果一個注釋不能在一行內(nèi)寫完,就該采用塊注釋 單行注釋之前應(yīng)該有一個空行單行注釋之前應(yīng)該有一個空行 以下是一個以下是一個

13、Java代碼中單行注釋的例子代碼中單行注釋的例子 if (condition) /* Handle the condition. */ . 尾端注釋尾端注釋極短的注釋可以與它們所要描述的代碼位于同一行,但是應(yīng)該有極短的注釋可以與它們所要描述的代碼位于同一行,但是應(yīng)該有足夠的空白來分開代碼和注釋足夠的空白來分開代碼和注釋若有多個短注釋出現(xiàn)于大段代碼中,它們應(yīng)該具有相同的縮進若有多個短注釋出現(xiàn)于大段代碼中,它們應(yīng)該具有相同的縮進以下是一個以下是一個Java代碼中尾端注釋的例子代碼中尾端注釋的例子 if (a = 2) return TRUE; /* special case */ else ret

14、urn isprime(a); /* works only for odd a */ 行末注釋行末注釋注釋界定符注釋界定符/,可以注釋掉整行或者一行中,可以注釋掉整行或者一行中的一部分的一部分它一般不用于連續(xù)多行的注釋文本;然而,它它一般不用于連續(xù)多行的注釋文本;然而,它可以用來注釋掉連續(xù)多行的代碼段可以用來注釋掉連續(xù)多行的代碼段三種風格的例子三種風格的例子if (foo 1) / Do a double-flip.elsereturn false; / Explain why here./if (bar 1) / / Do a triple-flip./ ./else/ return fal

15、se;文檔注釋文檔注釋若想了解更多,參見若想了解更多,參見How to Write Doc Comments for Javadoc,其中包含了有關(guān)文檔注釋標記的信息,其中包含了有關(guān)文檔注釋標記的信息(return, param, see)http:/ The Example class provides .*/public class Example .注意頂層注意頂層(top-level)的類和接口是不縮進的,而其成員是縮進的。描述類和接的類和接口是不縮進的,而其成員是縮進的。描述類和接 口的文檔注釋的第一行口的文檔注釋的第一行(/*)不需縮進;隨后的文檔注釋每行都縮進不需縮進;隨后的文檔

16、注釋每行都縮進1格格(使星號使星號 縱向?qū)R縱向?qū)R)。成員,包括構(gòu)造函數(shù)在內(nèi),其文檔注釋的第一行縮進。成員,包括構(gòu)造函數(shù)在內(nèi),其文檔注釋的第一行縮進4格,隨后每格,隨后每 行都縮進行都縮進5格。格。若你想給出有關(guān)類、接口、變量或方法的信息,而這些信息又不適合寫在文若你想給出有關(guān)類、接口、變量或方法的信息,而這些信息又不適合寫在文 檔中,則可使用實現(xiàn)塊注釋檔中,則可使用實現(xiàn)塊注釋(見見5.1.1)或緊跟在聲明后面的單行注釋或緊跟在聲明后面的單行注釋(見見5.1.2)。 例如,有關(guān)一個類實現(xiàn)的細節(jié),應(yīng)放入緊跟在類聲明后面的實現(xiàn)塊注釋中,例如,有關(guān)一個類實現(xiàn)的細節(jié),應(yīng)放入緊跟在類聲明后面的實現(xiàn)塊注

17、釋中, 而不是放在文檔注釋中。而不是放在文檔注釋中。 文檔注釋不能放在一個方法或構(gòu)造器的定義塊中,因為文檔注釋不能放在一個方法或構(gòu)造器的定義塊中,因為Java會將位于文檔注釋會將位于文檔注釋 之后的第一個聲明與其相關(guān)聯(lián)之后的第一個聲明與其相關(guān)聯(lián)聲明聲明推薦一行一個聲明,因為這樣以利于寫注釋,推薦一行一個聲明,因為這樣以利于寫注釋,例如:例如: int level; / indentation level int size; / size of table 要優(yōu)于要優(yōu)于 int level, size;聲明聲明不要將不同類型變量的聲明放在同一行,例如:不要將不同類型變量的聲明放在同一行,例如:

18、int foo, fooarray; /WRONG!注意:上面的例子中,在類型和標識符之間放了一個注意:上面的例子中,在類型和標識符之間放了一個空格,另一種被允許的替代方式是使用制表符:空格,另一種被允許的替代方式是使用制表符: int level; / indentation level int size; / size of table Object currentEntry; / currently selected table entry布局布局只在代碼塊的開始處聲明變量。(一個塊是指任何被包含在大括號只在代碼塊的開始處聲明變量。(一個塊是指任何被包含在大括號和和中間的中間的代碼。)代

19、碼。)不要在首次用到該變量時才聲明之。這會把注意力不集中的程序員搞糊涂,同時不要在首次用到該變量時才聲明之。這會把注意力不集中的程序員搞糊涂,同時會妨礙代碼在該作用域內(nèi)的可移植性。會妨礙代碼在該作用域內(nèi)的可移植性。 void myMethod() int int1 = 0; / beginning of method block if (condition) int int2 = 0; / beginning of if block . 該規(guī)則的一個例外是該規(guī)則的一個例外是for循環(huán)的索引變量循環(huán)的索引變量 for (int i = 0; i maxLoops; i+) . 布局布局避免聲明的

20、局部變量覆蓋上一級聲明的變量。例如,不要在內(nèi)部避免聲明的局部變量覆蓋上一級聲明的變量。例如,不要在內(nèi)部代碼塊中聲明相同的變量名:代碼塊中聲明相同的變量名: int count; . myMethod() if (condition) int count = 0; / AVOID! . . 初始化初始化盡量在聲明局部變量的同時初始化。唯一不這盡量在聲明局部變量的同時初始化。唯一不這么做的理由是變量的初始值依賴于某些先前發(fā)么做的理由是變量的初始值依賴于某些先前發(fā)生的計算。生的計算。類和接口的聲明類和接口的聲明當編寫類和接口時,應(yīng)該遵守以下格式規(guī)則:當編寫類和接口時,應(yīng)該遵守以下格式規(guī)則: - 在方

21、法名與其參數(shù)列表之前的左括號在方法名與其參數(shù)列表之前的左括號(間不要間不要有空格有空格 - 左大括號左大括號位于聲明語句同行的末尾位于聲明語句同行的末尾 - 右大括號右大括號“”另起一行,與相應(yīng)的聲明語句對另起一行,與相應(yīng)的聲明語句對齊,除非是一個空語句,齊,除非是一個空語句,“”應(yīng)緊應(yīng)緊 跟在跟在“”之之后后 -方法與方法之間以空行分隔方法與方法之間以空行分隔類和接口的聲明類和接口的聲明 class Sample extends Object int ivar1; int ivar2; Sample(int i, int j) ivar1 = i; ivar2 = j; int emptyM

22、ethod() . 語句語句簡單語句簡單語句 每行至多包含一條語句,例如:每行至多包含一條語句,例如: argv+; / Correct argc-; / Correct argv+; argc-; / AVOID!復合語句復合語句復合語句是包含在大括號中的語句序列,形如復合語句是包含在大括號中的語句序列,形如 語句語句 。例如下面各段。例如下面各段。 - 被括其中的語句應(yīng)該較之復合語句縮進一個層次被括其中的語句應(yīng)該較之復合語句縮進一個層次 - 左大括號左大括號應(yīng)位于復合語句起始行的行尾;右大括應(yīng)位于復合語句起始行的行尾;右大括號號應(yīng)另起一行并與復合語句首行對齊。應(yīng)另起一行并與復合語句首行對齊

23、。 - 大括號可以被用于所有語句,包括單個語句,只要這大括號可以被用于所有語句,包括單個語句,只要這些語句是諸如些語句是諸如if-else或或for控制結(jié)構(gòu)的一部分。這樣便于控制結(jié)構(gòu)的一部分。這樣便于添加語句而無需擔心由于忘了加括號而引入添加語句而無需擔心由于忘了加括號而引入bug。返回語句返回語句一個帶返回值的一個帶返回值的return語句不使用小括號語句不使用小括號(),除非它們以某種方式使返回值更為顯見。例如除非它們以某種方式使返回值更為顯見。例如: return; return myDisk.size(); return (size ? size : defaultSize);if,i

24、f-else,if else-if else語句語句(if, if-else, if else-if else Statements)if-else語句應(yīng)該具有如下格式:語句應(yīng)該具有如下格式: if (condition) statements; if (condition) statements; else statements; if (condition) statements; else if (condition) statements; else statements; if,if-else,if else-if else語句語句(if, if-else, if else-if e

25、lse Statements)注意:注意:if語句總是用語句總是用和和括起來,避免使用如下容括起來,避免使用如下容易引起錯誤的格式:易引起錯誤的格式: if (condition) /AVOID! THIS OMITS THEBRACES ! statement;空行空行空行將邏輯相關(guān)的代碼段分隔開,以提高可讀性??招袑⑦壿嬒嚓P(guān)的代碼段分隔開,以提高可讀性。u 下列情況應(yīng)該總是使用兩個空行:下列情況應(yīng)該總是使用兩個空行: - 一個源文件的兩個片段一個源文件的兩個片段(section)之間之間 - 類聲明和接口聲明之間類聲明和接口聲明之間u下列情況應(yīng)該總是使用一個空行:下列情況應(yīng)該總是使用一個空

26、行: - 兩個方法之間兩個方法之間 - 方法內(nèi)的局部變量和方法的第一條語句之間方法內(nèi)的局部變量和方法的第一條語句之間 - 塊注釋或單行注釋之前塊注釋或單行注釋之前 - 一個方法內(nèi)的兩個邏輯段之間,用以提高可讀性一個方法內(nèi)的兩個邏輯段之間,用以提高可讀性空格空格下列情況應(yīng)該使用空格:下列情況應(yīng)該使用空格:- 一個緊跟著括號的關(guān)鍵字應(yīng)該被空格分開,例如:一個緊跟著括號的關(guān)鍵字應(yīng)該被空格分開,例如:while (true) .注意:空格不應(yīng)該置于方法名與其左括號之間。這將有注意:空格不應(yīng)該置于方法名與其左括號之間。這將有助于區(qū)分關(guān)鍵字和方法調(diào)用。助于區(qū)分關(guān)鍵字和方法調(diào)用??崭窨崭? 空白應(yīng)該位于參數(shù)

27、列表中逗號的后面空白應(yīng)該位于參數(shù)列表中逗號的后面- 所有的二元運算符,除了所有的二元運算符,除了.,應(yīng)該使用空格將之與操作數(shù)分開。一,應(yīng)該使用空格將之與操作數(shù)分開。一元操作符和操作數(shù)之間不因該加空格,比如:負號元操作符和操作數(shù)之間不因該加空格,比如:負號(-)、自增、自增(+)和自減和自減(-)。例如:。例如: a += c + d; a = (a + b) / (c * d); while (d+ = s+) n+; printSize(size is + foo + n);空格空格- for語句中的表達式應(yīng)該被空格分開,例如:語句中的表達式應(yīng)該被空格分開,例如: for (expr1; e

28、xpr2; expr3)- 強制轉(zhuǎn)型后應(yīng)該跟一個空格,例如:強制轉(zhuǎn)型后應(yīng)該跟一個空格,例如: myMethod(byte) aNum, (Object) x); myMethod(int) (cp + 5), (int) (i + 3) + 1);命名規(guī)范命名規(guī)范命名規(guī)范使程序更易讀,從而更易于理解。它命名規(guī)范使程序更易讀,從而更易于理解。它們也可以提供一些有關(guān)標識符功能的信息,以們也可以提供一些有關(guān)標識符功能的信息,以助于理解代碼,例如,不論它是一個常量,包助于理解代碼,例如,不論它是一個常量,包,還是類。,還是類。命名規(guī)范(包)命名規(guī)范(包)一個唯一包名的前綴總是全部小寫的一個唯一包名的前

29、綴總是全部小寫的ASCII字母并且是字母并且是一個頂級域名,通常是一個頂級域名,通常是com,edu,gov,mil,net,org,或,或1981年年ISO3166標準所指定的標識國家的英文標準所指定的標識國家的英文雙字符代碼。包名的后續(xù)部分根據(jù)不同機構(gòu)各自內(nèi)部雙字符代碼。包名的后續(xù)部分根據(jù)不同機構(gòu)各自內(nèi)部的命名規(guī)范而不盡相同。這類命名規(guī)范可能以特定目的命名規(guī)范而不盡相同。這類命名規(guī)范可能以特定目錄名的組成來區(qū)分部門錄名的組成來區(qū)分部門(department),項目,項目(project),機器機器 (machine),或注冊名,或注冊名 (login names)。例如:。例如: com.

30、sun.eng com.apple.quicktime.v2 edu.cmu.cs.bovik.cheese命名規(guī)范(類)命名規(guī)范(類)類名是個一名詞,采用大小寫混合的方式,每類名是個一名詞,采用大小寫混合的方式,每個單詞的首字母大寫。盡量使你的類名簡潔而個單詞的首字母大寫。盡量使你的類名簡潔而富于描述。使用完整單詞,避免縮寫詞富于描述。使用完整單詞,避免縮寫詞(除非該除非該縮寫詞被更廣泛使用,像縮寫詞被更廣泛使用,像URL,HTML),例如,例如: class Raster; class ImageSprite;命名規(guī)范(接口)命名規(guī)范(接口)大小寫規(guī)則與類名相似大小寫規(guī)則與類名相似命名規(guī)范

31、(方法)命名規(guī)范(方法)方法名是一個動詞,采用大小寫混合的方式第方法名是一個動詞,采用大小寫混合的方式第一個單詞的首字母小寫,其后單詞的首字母大一個單詞的首字母小寫,其后單詞的首字母大寫,例如:寫,例如: run(); runFast(); getBackground();命名規(guī)范(變量)命名規(guī)范(變量)除了變量名外,所有實例,包括類,類常量,均采用除了變量名外,所有實例,包括類,類常量,均采用大小寫混合的方式,第一個單詞的首字母小寫,其后大小寫混合的方式,第一個單詞的首字母小寫,其后單詞的首字母大寫。變量名不應(yīng)以下劃線或美元符號單詞的首字母大寫。變量名不應(yīng)以下劃線或美元符號開頭,盡管這在語法

32、上是允許的。變量名應(yīng)簡短且富開頭,盡管這在語法上是允許的。變量名應(yīng)簡短且富于描述。變量名的選用應(yīng)該易于記憶,即,能夠指出于描述。變量名的選用應(yīng)該易于記憶,即,能夠指出其用途。盡量避免單個字符的變量名,除非是一次性其用途。盡量避免單個字符的變量名,除非是一次性的臨時變量。臨時變量通常被取名為的臨時變量。臨時變量通常被取名為i,j,k,m和和n,它們一般用于整型;它們一般用于整型;c,d,e,它們一般用于字符型。,它們一般用于字符型。命名規(guī)范(實例變量)命名規(guī)范(實例變量)大小寫規(guī)則和變量名相似,除了前面需要一個大小寫規(guī)則和變量名相似,除了前面需要一個下劃線下劃線命名規(guī)范(常量)命名規(guī)范(常量)類

33、常量和類常量和ANSI常量的聲明,應(yīng)該全部大寫,單常量的聲明,應(yīng)該全部大寫,單詞間用下劃線隔開。詞間用下劃線隔開。(盡量避免盡量避免ANSI常量,容易常量,容易引起錯誤引起錯誤)編程慣例編程慣例對實例以及類變量的訪問控制對實例以及類變量的訪問控制 若沒有足夠理由,不要把實例或類變量聲明為公有。若沒有足夠理由,不要把實例或類變量聲明為公有。通常,實例變量無需顯式的設(shè)置通常,實例變量無需顯式的設(shè)置(set)和獲取和獲取(gotten),通常這作為方法調(diào)用的邊緣效應(yīng)通常這作為方法調(diào)用的邊緣效應(yīng) (side effect)而產(chǎn)生。而產(chǎn)生。一個具有公有實例變量的恰當例子,是類僅作為數(shù)據(jù)一個具有公有實例變

34、量的恰當例子,是類僅作為數(shù)據(jù)結(jié)構(gòu),沒有行為。亦即,若你要使用一個結(jié)構(gòu)結(jié)構(gòu),沒有行為。亦即,若你要使用一個結(jié)構(gòu)(struct)而非一個類而非一個類(如果如果java支持結(jié)構(gòu)的話支持結(jié)構(gòu)的話),那么把類的實例,那么把類的實例變量聲明為公有是合適的變量聲明為公有是合適的編程慣例編程慣例引用類變量和類方法引用類變量和類方法 避免用一個對象訪問一個類的靜態(tài)變量和方法避免用一個對象訪問一個類的靜態(tài)變量和方法。應(yīng)該用類名替代。例如:。應(yīng)該用類名替代。例如: classMethod(); /OK AClass.classMethod(); /OK anObject.classMethod(); /AVOID!

35、編程慣例編程慣例常量常量 位于位于for循環(huán)中作為計數(shù)器值的數(shù)字常量,除了循環(huán)中作為計數(shù)器值的數(shù)字常量,除了-1,0和和1之外,不應(yīng)被直接寫入代碼。之外,不應(yīng)被直接寫入代碼。編程慣例編程慣例變量賦值變量賦值 避免在一個語句中給多個變量賦相同的值。它很難讀懂。例如:避免在一個語句中給多個變量賦相同的值。它很難讀懂。例如:fooBar.fChar = barFoo.lchar = c; / AVOID! 不要將賦值運算符用在容易與相等關(guān)系運算符混淆的地方。例如:不要將賦值運算符用在容易與相等關(guān)系運算符混淆的地方。例如: if (c+ = d+) / AVOID! (Java disallows)

36、. 應(yīng)該寫成應(yīng)該寫成 if (c+ = d+) != 0) . 編程慣例編程慣例不要使用內(nèi)嵌(embedded)賦值運算符試圖提高運行時的效率,這是編譯器的工作。例如: d = (a = b + c) + r; / AVOID! 應(yīng)該寫成 a = b + c; d = a + r;修改代碼時推薦使用的注釋修改代碼時推薦使用的注釋新添加的代碼新添加的代碼 /* added by username 2007-12-18 start */ /說明說明 code /* added by username 2007-12-18 end */刪除舊的代碼刪除舊的代碼 /* deleted by usern

37、ame 2007-12-18 start */ /說明說明 /old code /* deleted by username 2007-12-18 end*/修改舊的代碼修改舊的代碼 /* update by username 2007-12-18 start */ /說明說明 /old code new code/* update by username 2007-12-18 end */Java源文件范例一源文件范例一下面的例子,展示了如何合理布局一個包含單一公共類的下面的例子,展示了如何合理布局一個包含單一公共類的Java源程序。接口的布局與其相似源程序。接口的布局與其相似 /* %W%

38、 %E% Firstname Lastname* Copyright (c) 1993-1996 Sun Microsystems, Inc. All Rights Reserved.* This software is the confidential and proprietary information of Sun* Microsystems, Inc. (Confidential Information). You shall not* disclose such Confidential Information and shall use it only in* accordance with the terms of the license agreement you entered into* with Sun.* SUN MAKES NO REPRESENTA

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論