sun推薦的Java編碼規(guī)范_第1頁
sun推薦的Java編碼規(guī)范_第2頁
sun推薦的Java編碼規(guī)范_第3頁
sun推薦的Java編碼規(guī)范_第4頁
sun推薦的Java編碼規(guī)范_第5頁
已閱讀5頁,還剩6頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、Java編碼規(guī)范Java編碼規(guī)范11. 說明31.1 為什么要有編碼規(guī)范31.2 版權(quán)聲明32. 文件名(File Names)32.1 文件后綴(File Suffixes)33.1 Java源文件(Java Source Files)33.1.1 開頭注釋(Beginning Comments)33.1.2 包和引入(Package and Import Statements)33.1.3 類和接口聲明(Class and Interface Declarations)34.1 行長度34.2 換行(Wrapping Lines)3/ CONVENTION INDENTATION4Obje

2、ct andStillAnother) 4| !(condition5 && condition6) 45. 注釋(Comments)45.1 實(shí)現(xiàn)注釋的格式(Implementation Comment Formats)45.1.1 塊注釋45.1.2 單行注釋(Single-Line Comments)55.1.3 尾端注釋(Trailing Comments)55.1.4 行末注釋(End-Of-Line Comments)55.2 文檔注釋(Documentation Comments)56. 聲明(Declaration)56.1 每行聲明變量的數(shù)量(Number P

3、er Line)56.2 初始化(Initialization)66.3 布局(Placement)67.1 簡單語句(Single Statement)67.2 復(fù)合語句(Compound Statements)67.3 返回語句(return Statements)s67.4 if, if-else, if else-if else語句(if, if-else, if else-if else Statements)6 else 6 else if (condition) 6 else if (condition) 77.5 for語句(for Statements)77.6 while語

4、句(while Statements)77.7 do-while語句(do-while Statements)77.8 switch語句(switch Statements)77.9 try-catch語句(try-catch Statements)7 catch (ExceptionClass e) 7 catch (ExceptionClass e) 7 finally 78. 空白(White Space)78.1 空行(Blank Lines)78.2 空格(Blank Spaces)79. 命名規(guī)范(Naming Convention)810. 編程慣例(Programming Pr

5、actices)810.1 提供對(duì)實(shí)例以及類變量的訪問控制(Providing Access to Instance and Class Variables)810.2 引用類變量和類方法(Referring to Class Variables and Methods)810.4 變量賦值(Variable Assignments)810.5 其它慣例(Miscellaneous Practices)910.5.1 圓括號(hào)(Parentheses)910.5.2 返回值(Returning Values)910.5.3 條件運(yùn)算符“?”前的表達(dá)式(Expressions before “?”

6、 in the Conditional Operator)910.5.4 特殊注釋(Special Comments)911. 代碼范例(Code Examples)911.1 Java源文件范例(Java Source File Example)91. 說明1.1 為什么要有編碼規(guī)范編碼規(guī)范對(duì)于程序員而言尤為重要,有以下幾個(gè)原因: 一個(gè)軟件的生命周期中,80%的花費(fèi)在于維護(hù)。 幾乎沒有任何一個(gè)軟件,在其整個(gè)生命同期中,均由最初的開發(fā)人員來維護(hù)。 編碼規(guī)范可以改善軟件的可讀性,可以讓程序員盡快而徹底地理解新代碼。 如果你將源碼作為產(chǎn)品發(fā)布,就需要確認(rèn)它是否被很好的打包并且清晰無誤,一如你已構(gòu)建

7、的其它任何產(chǎn)品。為了執(zhí)行規(guī)范,每個(gè)軟件開發(fā)人員必須一致遵守編碼規(guī)范。每個(gè)人!1.2 版權(quán)聲明本文檔反映的是Sun Microsystem公司,Java語言規(guī)范中的編碼標(biāo)準(zhǔn)部分。主要貢獻(xiàn)者包括:Peter King,Patrick Naughton,Mike DeMoney,Jonni Kanerva,Kathy Walrath以及Scott Hommel。本文檔現(xiàn)由Scott Hommel維護(hù),有關(guān)評(píng)論請(qǐng)發(fā)至shommel。2. 文件名(File Names)這部分列出了常用的文件名及其后綴。2.1 文件后綴(File Suffixes)Java程序使用下列文件后綴:文件類別文件后綴Java源

8、文件.javaJava字節(jié)碼文件.class2.2 常用文件名(Common File Names)常用的文件名包括:文件名用途GNUmakefilemakefiles的首選文件名。我們采用gnumake來創(chuàng)建(build)軟件。README概述特定目錄下所含內(nèi)容的文件的首選文件名。3. 文件組織(File Orgnization)一個(gè)文件由被空行分割而成的段落以及標(biāo)識(shí)每個(gè)段落的可選注釋共同組成。超過2000行的程序難以閱讀,應(yīng)該盡量避免?!癑ava源文件范例”提供了一個(gè)頁面布局合理的Java程序范例。3.1 Java源文件(Java Source Files)每個(gè)Java源文件都包含一個(gè)單一

9、的公共類或接口。若私有類和接口與一個(gè)公共類相關(guān)聯(lián)??梢詫⑺鼈兒凸差惙湃胪瑐€(gè)源文件。公共類必須是這個(gè)文件中的第一個(gè)類和接口。Java源文件還遵循以下規(guī)則: 開頭注釋(參見“開頭注釋”) 包和引入語句(參見“包和引入語句) 類和接口聲明(參見“類和接口聲明)3.1.1 開頭注釋(Beginning Comments)所有的源文件都應(yīng)該在開頭有一個(gè)C語言風(fēng)格的注釋,其中列出數(shù)出類名、版本信息,日期和版權(quán)聲明:/ * * Classname * * Version information * * Date * * Copyright notice * /3.1.2 包和引入(Package and

10、Import Statements)在多數(shù)Java源文件中,第一個(gè)非注釋行是包語句行。在它之后可以跟引入語句。例如:package java.awt;import java.awt.peer.CanvasPeer;3.1.3 類和接口聲明(Class and Interface Declarations)下表描述了類和接口聲明的免修部分以及它們出現(xiàn)的先后次序。參見“Java源文件范例”中一個(gè)包含注釋的例子。類/接口聲明的各部分注解1類/接口文檔注釋(/ * /)該注釋中所包含的信息,參見“文檔注釋”2類/接口的聲明3類/接口實(shí)現(xiàn)的注釋(/ * /)如果有必要的話該注釋應(yīng)包含任何有關(guān)整個(gè)類或接口

11、的信息,而這些信息又適合作為類/接口文檔注釋。4類的(靜態(tài))變量首先是類的public變量,隨后是protected變量,再后是包一級(jí)別的變量(沒有訪問修飾符),最后是private變量。5實(shí)例變量首先是public變量,隨后是protected變量,再后是包一級(jí)別的變量(沒有訪問修飾符),最后是private變量。6構(gòu)造器7方法這些方法應(yīng)該按功能,而非作用域或訪問權(quán)限,分組。4. 縮進(jìn)排版(Indentation)4個(gè)空格常被作為縮進(jìn)排版的一個(gè)單位??s進(jìn)的確切解釋并未詳細(xì)指定(空格vs.制表符)。一個(gè)制表符等于8個(gè)空格(而非4個(gè))。4.1 行長度盡量避免一行長度超過80個(gè)字符,因?yàn)楹芏嘟K端和

12、工具不能很好處理之。注意:用于文檔是的例子應(yīng)該使用更短的行長,長度一般不超過70個(gè)字符。4.2 換行(Wrapping Lines)當(dāng)一個(gè)表達(dá)式無法容納在一行內(nèi)時(shí),可以依據(jù)如下一般規(guī)則斷開之: 在一個(gè)逗號(hào)后面斷開。 在一個(gè)操作符前面斷開。 寧可選擇較高級(jí)別的(higher-level)的斷開,而非較低級(jí)別(lower-level)的斷開。 新的一行應(yīng)該與上一行同一級(jí)別表達(dá)式的開頭處對(duì)齊。 如果以上規(guī)則導(dǎo)致你的代碼混亂或者使你的代碼都堆擠在右邊,那就代之以縮進(jìn)8個(gè)空格。以下是斷開方法的一些例子:someMethod(longExpression1, longExpression2, longEx

13、pression3, longExpression4, longExpression5);var = someMethod1(Expression1, someMethod2(longExpression2,longExpression3);以下是兩個(gè)斷開算術(shù)表達(dá)式的例子。前者更好,因?yàn)閿嚅_處位于括號(hào)表達(dá)式的外邊,這是個(gè)較高級(jí)別的斷開。longName1 = longName2 * (longName3 + longName4- longNeme5)+ 4 * longName6); /PREFFERlongName1 = longName2 * (longName3 + longName4-

14、 longName5) + 4 * longName6; /AVOID以下是兩個(gè)縮進(jìn)方法聲明的例子。前者是常規(guī)情形,后者若使用常規(guī)的縮進(jìn)方式將會(huì)使第二行和第三行移得很靠右,所以代這以縮進(jìn)8個(gè)空格。/ CONVENTION INDENTATIONsomeMethod(int anArg, Object anotherArg,String yetAnotherArg, Object andStillAnother) / INDENT 8 SPACES TO AVOID VERY DEEP INDENTSprivate static synchronized horkingLongMethodNam

15、e(int anArg,Object anotherArg, String yetAnotherArg,Object andStillAnother) if語句的換行通常使用8個(gè)空格的規(guī)則,因?yàn)槌R?guī)縮進(jìn)(4個(gè)空格)會(huì)使語句看起來比較費(fèi)勁。比如:/DONT USE THIS INDENTATIONif (condition1 && condition2)| (condition3 && condition4)| !(condition5 && condition6) /BAD WRAPSdoSomethingAboutIt(); / MAKE TH

16、IS LING EASY TO MISS/ USE THIS INDENTATION INSTEADif (condition1 && condition2)| (condition3 && condition4)| !(condition5 && condition6) doSomethingAboutIt();/ OR USE THISif (condition1 && condition2) | (condition3 && condition4) | !(condition5 && cond

17、ition6) doSomthingAoutIt();這里有三種可行的方法用于處理三元運(yùn)算表達(dá)式:alpha = (aLongBooleanExpression) ? beta : gamma;alpha = (aLongBooleanExpression) ? beta : gamma;alpha = (aLongBooleanExpression) ? beta : gamma;5. 注釋(Comments)Java程序有兩類注釋:實(shí)現(xiàn)注釋(implementation comments)和文檔注釋(document comments)。實(shí)現(xiàn)注釋是那些在C+中見過的,使用/*/和/界定的注

18、釋。文檔注釋(被稱為“doc comments”)是Java獨(dú)有的,并由/*/界定。文檔注釋可以通過javadoc工具轉(zhuǎn)換成HTML文件。實(shí)現(xiàn)注釋用以注釋代碼或或者實(shí)現(xiàn)細(xì)節(jié)。文檔注釋從實(shí)現(xiàn)自由(implemtentation-free)的角度描述代碼的規(guī)范。它可以被那些手頭沒有源碼的開發(fā)人員讀懂。注釋應(yīng)被用來給出代碼的總括,并提供代碼自身沒有提供的附加信息。注釋應(yīng)該僅包含與閱讀和理解程序有關(guān)的信息。例如,相應(yīng)的包如何被建立或位于哪個(gè)目錄下之類的信息不應(yīng)包括在注釋中。在注釋里,對(duì)設(shè)計(jì)決策中重要的或者不是顯而易見的地方進(jìn)行說明是可以的,但應(yīng)避免提供代碼中已清晰表達(dá)出來的重復(fù)信息,多余的注釋很容易過

19、時(shí)。通常應(yīng)避免那些代碼更新就可能過時(shí)的注釋。注意:頻繁的注釋有時(shí)反映出代碼的低質(zhì)量。當(dāng)你覺得被迫要加注釋的時(shí)候,考慮一下重寫代碼使其更清晰。注釋不應(yīng)寫在用星號(hào)或字符畫出來的大框里。注釋不應(yīng)包括諸如制表符和回退符之類 的特殊字符。5.1 實(shí)現(xiàn)注釋的格式(Implementation Comment Formats)程序可以有4種實(shí)現(xiàn)注釋的風(fēng)格:塊(Block),單行(single-line),尾端(trailing)和行末(end-of-line)。5.1.1 塊注釋塊注釋通常用于提供對(duì)文件,方法,數(shù)據(jù)結(jié)構(gòu)和算法的描述。塊注釋被置于每個(gè)文件的開始處以及每個(gè)方法之前。它們也可以被用于其他地方,比如

20、方法的內(nèi)部。在功能和方法內(nèi)部的塊注釋應(yīng)該和它們所描述的代碼具有一樣的縮進(jìn)格式。塊注釋之首應(yīng)該有一個(gè)空行,用于把塊注釋和代碼分割開來,比如: / * * Here is a block comment. */塊注釋可以以/ *-開頭,這樣indent(1)就可以將之識(shí)別為一個(gè)代碼塊的開始,而不會(huì)重排它。 / *- * Here is a block comment with some very special * formatting that I want indent(1) to ignore. * * one * two * three */注意:如果你不使用indent(1),就不必在代

21、碼中使用/ *-, 或?yàn)樗丝赡軐?duì)你的代碼運(yùn)行indent(1)讓步。參見“文檔注釋”。5.1.2 單行注釋(Single-Line Comments)短注釋可以顯示一行內(nèi),并與其后的代碼具有一樣的縮進(jìn)層級(jí)。如果一個(gè)注釋不能在一行內(nèi)寫完,就該塊注釋(參見“塊注釋”)。單行注釋之前應(yīng)該有一個(gè)空行。以下是一個(gè)Java代碼中單行注釋的例子:if (condition) / * Handle the condition. */5.1.3 尾端注釋(Trailing Comments)極短的注釋可以與它們所要描述的代碼位于同一行,但是應(yīng)該有足夠的空白來分開代碼和注釋。若有多個(gè)短注釋出現(xiàn)于大段代碼中,它們

22、應(yīng)該具有相同的縮進(jìn)。以下是一個(gè)Java代碼中尾端注釋的例子: if (a =2) return TRUE; / * special case */ else return isPrime(a); / * works only for odd a */ 5.1.4 行末注釋(End-Of-Line Comments)注釋界定符“/”,可以注釋掉整行或者一行中的一部分。它一般不用于連續(xù)多行的注釋文本;然而,它可以用來注釋掉多行的代碼段。以下是所有三種風(fēng)格的例子: if(foo > 1) / Do a double-filp. else return false; / if (bar >

23、 1) / / / Do a triple-filp. / / / else / return false; / 5.2 文檔注釋(Documentation Comments)注意:此處描述的注釋格式之范例,參見“Java源文件范例”若想了解更多,參見“How to Write Doc Comments for Javadoc”,其中包含了有關(guān)文檔注釋標(biāo)記的信息(return,param,see):若想了解有關(guān)文檔注釋和javadoc的詳細(xì)資料,參見javadoc的主頁: 文檔注釋描述Java的類、接口、構(gòu)造器、方法,以及字段(field)。每個(gè)文檔注釋都會(huì)被置于注釋界定符/ */之中,一個(gè)

24、注釋對(duì)應(yīng)一個(gè)類、接口或成員。該注釋應(yīng)位于聲明之前: / * * The Example class provides */public class Example 注意:頂層(top-level)的類和接口是不縮進(jìn)的,而其成員是縮進(jìn)的。描述類和接口的文檔注釋的第一行會(huì)被置于注釋的第一行(/ *)不需要縮進(jìn);隨后的文檔注釋每行都縮進(jìn)1格(使星號(hào)縱向?qū)R)。成員,包括構(gòu)造函數(shù)在內(nèi),其文檔注釋的第一行縮進(jìn)4格,隨后每行都縮進(jìn)5格。若你想給出有關(guān)類、接口、變量或方法的信息,而這些信息又不適合寫在文檔中,則可使用實(shí)現(xiàn)塊注釋(見5.1.1)或緊跟在聲明后面的單行注釋(見5.1.2)。例如,有關(guān)一個(gè)類實(shí)現(xiàn)的

25、細(xì)節(jié)應(yīng)放入緊跟在類聲明后面的實(shí)現(xiàn)塊注釋中,而不是放在文檔注釋中。文檔注釋不能放在一個(gè)方法或構(gòu)造器的定義塊中,因?yàn)镴ava會(huì)將位于文檔注釋之后的第一個(gè)聲明與其相關(guān)聯(lián)。6. 聲明(Declaration)6.1 每行聲明變量的數(shù)量(Number Per Line)推薦一行一個(gè)聲明,因?yàn)檫@樣以利于寫注釋。亦即,int level; / indentation level int size; / size of table要優(yōu)于,int level, size;不要將不同類型變量的聲明放在同一行,例如: int foo, fooarry; / WRONG!注意:上面的例子中,在類型和標(biāo)識(shí)之間放了一個(gè)空

26、格,另一種被允許的替代方法是使用制表符:int level; / indentation levelint size; / size of table Object currentEntry; / currently selected table entry6.2 初始化(Initialization)盡量在聲明局部變量的同時(shí)進(jìn)行初始化。唯一 不這么做理由是變量的初始值依賴于某些先前發(fā)生的計(jì)算。6.3 布局(Placement)只在代碼塊的開始處聲明變量(一個(gè)塊是指任何被包含在大括號(hào)“”和“”中間的代碼)。不要在首次用于該變量時(shí)才聲明之,這會(huì)把注意力不集中的程序員搞糊涂,同時(shí)會(huì)妨礙代碼在該作用

27、域內(nèi)的可移植性。 void myMethod() int int1 = 0; if (condition) int int2 = 0; 該規(guī)則的一個(gè)例外是for循環(huán)的索引變量 for (int i = 0; I < maxLoops; i+) 避免聲明的局部變量覆蓋上一級(jí)聲明的變量。例如,不要在內(nèi)部代碼塊中聲明相同的變量名: int count; myMethod() if (condition) int count = 0; / AVOID 6.4 類和接口的聲明(Class and Interface Declarations)當(dāng)編寫類和接口時(shí),應(yīng)該遵守以下格式規(guī)則:1 在方法名與其

28、參數(shù)列表之前的左括號(hào)“(”間不要有空格。 左大括號(hào)“”位于聲明語句同行的末尾。 右大括號(hào)“”另起一行,與相應(yīng)的聲明語句對(duì)齊,除非是一個(gè)空語句,“”應(yīng)緊跟在“”之后。 class Sample extends Object int ivar1; int ivar2; Sample(int i, int j) ivar1 = i; ivar2 = j; int emptyMethod() 方法與方法之間 以空行分隔。7. 語句(Statements)7.1 簡單語句(Single Statement)每行至多包含一條語句,例如: argv+; / Correct argc-; / Correcta

29、rgv+; argc-; / AVOID!7.2 復(fù)合語句(Compound Statements)復(fù)合語句是包含在大括號(hào)中的語句序列,形如“ 語句 ”。例如下面各段。 被括其中的語句應(yīng)該較之復(fù)合語句縮進(jìn)一個(gè)層次。 左大括號(hào)“”應(yīng)位于復(fù)合語句起始行的行尾;右大括號(hào)“”應(yīng)另起一行并與復(fù)合語句首行對(duì)齊。 大括號(hào)可以被用于所有語句,包括單個(gè)語句,只要這些語句是諸如if else或for控制結(jié)構(gòu)的一部分。這樣便于添加語句而無需擔(dān)心由于忘了加括號(hào)而引入bug.7.3 返回語句(return Statements)s一個(gè)帶返回值的return語句不使用小括號(hào)“()”,除非它們以某種方式使返回值更顯見。例如

30、: return; return myDisk.size(); return (size ? size ; defaultSize);7.4 if, if-else, if else-if else語句(if, if-else, if else-if else Statements)if-else語句應(yīng)該具有如下格式:if (condition) statements; if (condition) statements; else statements; if (condition) statements; else if (condition) statements; else if (c

31、ondition) statements; 注意:if語句問題用“”和“”括起來,避免使用如下容易引起錯(cuò)誤的格式: if (condition) / AVOI! THIS OMITS THE BRACES ! statement;7.5 for語句(for Statements)一個(gè)for語句應(yīng)該具有如下格式: for (initialization; condition; update) statements; 一個(gè)空的語句(所有工作都在初始化,條件判斷,更新子句中完成)應(yīng)該具有如下格式: for (initialization; condition; update);當(dāng)在for語句的初始化

32、或更新子句中使用逗號(hào)時(shí),避免因使用三個(gè)以上變量,而導(dǎo)致復(fù)雜度提高。若需要,可以在for循環(huán)之前(為初始化子句)或for循環(huán)末尾(為更新子句)使用單獨(dú)的語句。7.6 while語句(while Statements)一個(gè)while語句應(yīng)該具有如下格式: while (condition) statements; 一個(gè)空的while語句應(yīng)該具有如下格式: while (condition);7.7 do-while語句(do-while Statements)一個(gè)do-while語句應(yīng)該具有如下格式: do statements; while (condition);7.8 switch語句(sw

33、itch Statements)一個(gè)switch語句應(yīng)該具有如下格式: switch (condition) case ABC: statements; / * falls through */ case DEF: statements; break; case XYZ: statements; break; 每當(dāng)一個(gè)case順著往下執(zhí)行時(shí)(因?yàn)闆]有break語句),通常應(yīng)在break語句的位置添加注釋。上面的示例代碼中就包含注釋/ * falls through */。7.9 try-catch語句(try-catch Statements)一個(gè)try-catch語句應(yīng)該具有如下格式: tr

34、y statements; catch (ExceptionClass e) statements; 一個(gè)try-catch語句后面也可能跟著一個(gè)finally語句,不論try代碼塊是否順利執(zhí)行完,它都會(huì)被執(zhí)行。 try statements; catch (ExceptionClass e) statements; finally statements; 8. 空白(White Space)8.1 空行(Blank Lines)空行將邏輯相關(guān)的代碼段分隔開,以提高可讀性。下列情況應(yīng)總是使用兩個(gè)空行: 一個(gè)源文件的兩個(gè)片段(section)之間。 類聲明和接口聲明之間。下列情況應(yīng)該總是使用一個(gè)

35、空行: 兩個(gè)方法之間。 方法內(nèi)的局部變量和方法的第一條語句之間。 塊注釋(參見“5.1.1”)或單行注釋(參見5.1.2)之前。 一個(gè)方法內(nèi)的兩個(gè)邏輯段之間,用以提高可讀性。8.2 空格(Blank Spaces)下列情況應(yīng)該使用空格: 一個(gè)緊跟著括號(hào)的關(guān)鍵應(yīng)該被空格分開,例如: while (true) . 注意:空格不應(yīng)該置于方法名與其左括號(hào)之間,這將有助于區(qū)分關(guān)鍵字和方法調(diào)用。 空白應(yīng)該位于參數(shù)列表中逗號(hào)的后面。 所有的二元運(yùn)算符,除了“.”,應(yīng)該使用空格將之與操作數(shù)分開。一元操作符和操作數(shù)之間不應(yīng)該加空格,比如:負(fù)號(hào)(“-”),自增(“+”)和自減(“-”)。例如: a += c +

36、d; a = (a + b) / (c * d); while (d+ + s+) n+; printSize(“size is ” + foo + “n”); for語句中的表達(dá)式應(yīng)該被空格分開,例如: for (expr1; expr2; expr3) 強(qiáng)制轉(zhuǎn)型后應(yīng)該跟一個(gè)空格,例如:myMethod(byte) aNum, (Object) x);myMethod(int) (cp + 5), (int) (i + 3) + 1);9. 命名規(guī)范(Naming Convention) 9.1包(Packages)一個(gè)唯一包名的前綴總是全部小寫的ASC字母并且是一個(gè)頂級(jí)域名,通常是com,

37、gov,edu,mil,net,org,或1981年ISO 3166標(biāo)準(zhǔn)所指定的標(biāo)識(shí)的國家的英文雙字符代碼。包名的后續(xù)部分根據(jù)不同機(jī)構(gòu)各自內(nèi)部的命名規(guī)范而不盡相同。這類命名規(guī)范可能以特定目錄名的組成來區(qū)分部門(department),項(xiàng)目(project),機(jī)器(machine),或注冊(cè)名(login names)。例如:com.sun.engcom.apple.quicktime.v2edu.cmu.cs.bovik.cheese9.2類(Classes)類名是一個(gè)名詞,采用大小寫混合方式,每個(gè)單詞的首字母大寫。盡量使你的類名簡潔而富于描述。使用完整單詞,避免縮寫詞(除非該縮寫詞被廣泛的使用

38、,如URL,HTML)。例如:class Rasterclass ImageSprite9.3接口(Interfaces)interface RasterDelegateinterface Storing9.4方法(Methods)方法名是一個(gè)動(dòng)詞,采用大小寫混合方式,第一個(gè)單詞的首字母小寫,其后單詞的首字母大寫。例如:run()runFase()getBackground()9.5變量(Variables)除了變量名外,所有實(shí)例,包括類,類常量,均采用大小寫混合的方式,第一個(gè)單詞的首字母小寫,其后單詞的首字母大寫。變量名不應(yīng)以下劃線或美元符號(hào)開頭,盡管這在語法上是允許的。例如:char ci

39、nt ifloat myWidth9.6實(shí)例變量(Instance Variables)實(shí)例變量名應(yīng)簡短且富于描述。變量名的選用應(yīng)該易于記憶,即,能夠指出其用途。盡量避免單個(gè)字符的變量名,除非是一個(gè)性臨時(shí)變量。臨時(shí)變量通常被取名為i,j,k,m和n,它們一般用于整形;c,d,e,它們一般用于字符型。int _employeeldString _nameCustomer _customer9.7常量(Constants)大小寫規(guī)則和變量名相似,除了前面需要一個(gè)下劃線隔開。盡量避免ANSI常量,容易引起錯(cuò)誤。例如:static final int MIN_WIDTH = 4static final

40、 int MAX_WIDTH = 999static final int GET_THE_CPU = 1 命名規(guī)范使程序更易讀,從而更易于理解。它們也可以提供一些有關(guān)標(biāo)識(shí)符功能的信息,以助于理解代碼。例如,不論它是一個(gè)常量、包,還是類(如9.7的例子所示)。 10. 編程慣例(Programming Practices)10.1 提供對(duì)實(shí)例以及類變量的訪問控制(Providing Access to Instance and Class Variables)若沒有足夠的理由,不要把實(shí)例或類類變量聲明為public。通常,實(shí)例變量無需顯式的設(shè)置(set)和獲取(gotten),通常這作為方法調(diào)用

41、的邊緣效應(yīng)(side effect)而產(chǎn)生。一個(gè)具有public實(shí)例變量的恰當(dāng)例子,是類僅作為數(shù)據(jù)結(jié)構(gòu),沒有行為。亦即,若你要使用一個(gè)結(jié)構(gòu)(struct)而非一個(gè)類(如果Java支持結(jié)構(gòu)的話),那么把類的實(shí)例變量聲明為public是合適的。10.2 引用類變量和類方法(Referring to Class Variables and Methods)避免用一個(gè)對(duì)象訪問一個(gè)類的靜態(tài)變量和方法。應(yīng)該用類名替代。例如: classMethod(); / OK AClass.classMethod(); / OK anObject.classMethod(); / AVOID!10.3常量(Const

42、ants)位于for循環(huán)中作為計(jì)數(shù)器值的數(shù)字常量,除了-1,0和1之外,不應(yīng)被直接寫入代碼。10.4 變量賦值(Variable Assignments)避免在一個(gè)語句中給多個(gè)變量賦相同的值。它很難讀懂。例如:fooBar.fChar = barFoo.lchar = c; / AVOID!不要將賦值運(yùn)算符用在容易與相等關(guān)系運(yùn)算符混淆的地方。例如: if (c+ = d+) / AVOID! (Java disallows) . 應(yīng)該寫成 if (c+ = d+) ! = 0) 不要使用內(nèi)嵌(embedded)賦值運(yùn)算符試圖提高運(yùn)行時(shí)效率,這是編譯器的工作。例如:d = (a = b +c)

43、+ r; / AOVID!應(yīng)該寫成 a = b + c; d = a + r;10.5 其它慣例(Miscellaneous Practices)10.5.1 圓括號(hào)(Parentheses)一般而言,在含有多種運(yùn)算符的表達(dá)式中使用括號(hào)來避免運(yùn)算符優(yōu)先級(jí)問題,是個(gè)好方法。即便運(yùn)算符的優(yōu)先級(jí)對(duì)你而言可能很清楚,但對(duì)其他人未必如此。你不能假設(shè)別的程序員和你一樣清楚運(yùn)算符的優(yōu)先級(jí)。 if (a = b && c =d) / AVOID! if (a = b) && (c = d) / RIGHT10.5.2 返回值(Returning Values)設(shè)法讓你的程序結(jié)構(gòu)

44、符合目的。例如: if (booleanException) return true; else return false; 應(yīng)該代之以如下方法: return booleanException;類似地:if (condition) return x; return y;應(yīng)該寫為: return (condition ? x : y);10.5.3 條件運(yùn)算符“?”前的表達(dá)式(Expressions before “?” in the Conditional Operator)如果一個(gè)包含二元運(yùn)算符表達(dá)式出現(xiàn)在三元運(yùn)算符“ ? : ”之前,那么應(yīng)該給表達(dá)式添上一對(duì)圓括號(hào)。例如:(x >= 0) ? x : -x;10.5.4 特殊注釋(Special Comments)在注釋中使用XXX來標(biāo)識(shí)某些方法未實(shí)現(xiàn)(bogus)的但可以工作的內(nèi)容。用FIXME來標(biāo)識(shí)某些假的和錯(cuò)誤的內(nèi)容。11. 代碼范

溫馨提示

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

評(píng)論

0/150

提交評(píng)論