欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Huihoo.org - Java語(yǔ)言編碼規范(Java Code Conventions)
Java語(yǔ)言編碼規范(Java Code Conventions)
 名稱(chēng) Java語(yǔ)言編碼規范(Java Code Conventions)
 譯者 晨光(Morning)
 簡(jiǎn)介 本文檔講述了Java語(yǔ)言的編碼規范,較之陳世忠先生《c++編碼規范》的浩繁詳盡,此文當屬短小精悍了。而其中所列之各項條款,從編碼風(fēng)格,到注意事項,不單只Java,對于其他語(yǔ)言,也都很有借鑒意義。因為簡(jiǎn)短,所以易記,大家不妨將此作為handbook,常備案頭,逐一對驗。
 聲明 如需復制、傳播,請附上本聲明,謝謝。
原文出處:http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html,
譯文出處:http://morningspace.51.net/,moyingzz@etang.com

 目錄

1 介紹 2 文件名 3 文件組織 4 縮進(jìn)排版 5 注釋 6 聲明 7 語(yǔ)句 8 空白 9 命名規范
    10 編程慣例 11 代碼范例

    1 介紹(Introduction)

    1.1 為什么要有編碼規范(Why Have Code Conventions)

    編碼規范對于程序員而言尤為重要,有以下幾個(gè)原因:

    - 一個(gè)軟件的生命周期中,80%的花費在于維護
    - 幾乎沒(méi)有任何一個(gè)軟件,在其整個(gè)生命周期中,均由最初的開(kāi)發(fā)人員來(lái)維護
    - 編碼規范可以改善軟件的可讀性,可以讓程序員盡快而徹底地理解新的代碼
    - 如果你將源碼作為產(chǎn)品發(fā)布,就需要確任它是否被很好的打包并且清晰無(wú)誤,一如你已構建的其它任何產(chǎn)品

    為了執行規范,每個(gè)軟件開(kāi)發(fā)人員必須一致遵守編碼規范。每個(gè)人。

    1.2 版權聲明(Acknowledgments)

    本文檔反映的是Sun MicroSystems公司,Java語(yǔ)言規范中的編碼標準部分。主要貢獻者包括:Peter King,Patrick Naughton,Mike DeMoney,Jonni Kanerva,Kathy Walrath以及Scott Hommel。

    本文檔現由Scott Hommel維護,有關(guān)評論意見(jiàn)請發(fā)至shommel@eng.sun.com

    2 文件名(File Names)

    這部分列出了常用的文件名及其后綴。

    2.1 文件后綴(File Suffixes)

    Java程序使用下列文件后綴:

    文件類(lèi)別 文件后綴
    Java源文件 .java
    Java字節碼文件 .class

    2.2 常用文件名(Common File Names)

    常用的文件名包括:

    文件名 用途
    GNUmakefile makefiles的首選文件名。我們采用gnumake來(lái)創(chuàng )建(build)軟件。
    README 概述特定目錄下所含內容的文件的首選文件名

    3 文件組織(File Organization)

    一個(gè)文件由被空行分割而成的段落以及標識每個(gè)段落的可選注釋共同組成。超過(guò)2000行的程序難以閱讀,應該盡量避免。"Java源文件范例"提供了一個(gè)布局合理的Java程序范例。

    3.1 Java源文件(Java Source Files)

    每個(gè)Java源文件都包含一個(gè)單一的公共類(lèi)或接口。若私有類(lèi)和接口與一個(gè)公共類(lèi)相關(guān)聯(lián),可以將它們和公共類(lèi)放入同一個(gè)源文件。公共類(lèi)必須是這個(gè)文件中的第一個(gè)類(lèi)或接口。

    Java源文件還遵循以下規則:

    - 開(kāi)頭注釋?zhuān)▍⒁?jiàn)"- 包和引入語(yǔ)句(參見(jiàn)"- 類(lèi)和接口聲明(參見(jiàn)"

    3.1.1 開(kāi)頭注釋(Beginning Comments)

    所有的源文件都應該在開(kāi)頭有一個(gè)C語(yǔ)言風(fēng)格的注釋?zhuān)渲辛谐鲱?lèi)名、版本信息、日期和版權聲明:

      /*                * Classname                *                * Version information                *                * Date                *                * Copyright notice                */                

     

    3.1.2 包和引入語(yǔ)句(Package and Import Statements)

    在多數Java源文件中,第一個(gè)非注釋行是包語(yǔ)句。在它之后可以跟引入語(yǔ)句。例如:

      package java.awt;                import java.awt.peer.CanvasPeer;                

     

    3.1.3 類(lèi)和接口聲明(Class and Interface Declarations)

    下表描述了類(lèi)和接口聲明的各個(gè)部分以及它們出現的先后次序。參見(jiàn)"

      類(lèi)/接口聲明的各部分 注解
    1 類(lèi)/接口文檔注釋(/**……*/) 該注釋中所需包含的信息,參見(jiàn)"
    2 類(lèi)或接口的聲明  
    3 類(lèi)/接口實(shí)現的注釋(/*……*/)如果有必要的話(huà) 該注釋?xiě)魏斡嘘P(guān)整個(gè)類(lèi)或接口的信息,而這些信息又不適合作為類(lèi)/接口文檔注釋。
    4 類(lèi)的(靜態(tài))變量 首先是類(lèi)的公共變量,隨后是保護變量,再后是包一級別的變量(沒(méi)有訪(fǎng)問(wèn)修飾符,access modifier),最后是私有變量。
    5 實(shí)例變量 首先是公共級別的,隨后是保護級別的,再后是包一級別的(沒(méi)有訪(fǎng)問(wèn)修飾符),最后是私有級別的。
    6 構造器  
    7 方法 這些方法應該按功能,而非作用域或訪(fǎng)問(wèn)權限,分組。例如,一個(gè)私有的類(lèi)方法可以置于兩個(gè)公有的實(shí)例方法之間。其目的是為了更便于閱讀和理解代碼。

    4 縮進(jìn)排版(Indentation)

    4個(gè)空格常被作為縮進(jìn)排版的一個(gè)單位??s進(jìn)的確切解釋并未詳細指定(空格 vs. 制表符)。一個(gè)制表符等于8個(gè)空格(而非4個(gè))。

    4.1 行長(cháng)度(Line Length)

    盡量避免一行的長(cháng)度超過(guò)80個(gè)字符,因為很多終端和工具不能很好處理之。

    注意:用于文檔中的例子應該使用更短的行長(cháng),長(cháng)度一般不超過(guò)70個(gè)字符。

    4.2 換行(Wrapping Lines)

    當一個(gè)表達式無(wú)法容納在一行內時(shí),可以依據如下一般規則斷開(kāi)之:

    - 在一個(gè)逗號后面斷開(kāi)
    - 在一個(gè)操作符前面斷開(kāi)
    - 寧可選擇較高級別(higher-level)的斷開(kāi),而非較低級別(lower-level)的斷開(kāi)
    - 新的一行應該與上一行同一級別表達式的開(kāi)頭處對齊
    - 如果以上規則導致你的代碼混亂或者使你的代碼都堆擠在右邊,那就代之以縮進(jìn)8個(gè)空格。

    以下是斷開(kāi)方法調用的一些例子:

      someMethod(longExpression1, longExpression2, longExpression3,                longExpression4, longExpression5);                var = someMethod1(longExpression1,                someMethod2(longExpression2,                longExpression3));                

     

    以下是兩個(gè)斷開(kāi)算術(shù)表達式的例子。前者更好,因為斷開(kāi)處位于括號表達式的外邊,這是個(gè)較高級別的斷開(kāi)。

      longName1 = longName2 * (longName3 + longName4 - longName5)                + 4 * longname6; //PREFFER                longName1 = longName2 * (longName3 + longName4                - longName5) + 4 * longname6; //AVOID                

     

    以下是兩個(gè)縮進(jìn)方法聲明的例子。前者是常規情形。后者若使用常規的縮進(jìn)方式將會(huì )使第二行和第三行移得很靠右,所以代之以縮進(jìn)8個(gè)空格

      //CONVENTIONAL INDENTATION                someMethod(int anArg, Object anotherArg, String yetAnotherArg,                Object andStillAnother) {                ...                }                //INDENT 8 SPACES TO AVOID VERY DEEP INDENTS                private static synchronized horkingLongMethodName(int anArg,                Object anotherArg, String yetAnotherArg,                Object andStillAnother) {                ...                }                

     

    if語(yǔ)句的換行通常使用8個(gè)空格的規則,因為常規縮進(jìn)(4個(gè)空格)會(huì )使語(yǔ)句體看起來(lái)比較費勁。比如:

      //DON’T USE THIS INDENTATION                if ((condition1 && condition2)                || (condition3 && condition4)                ||!(condition5 && condition6)) { //BAD WRAPS                doSomethingAboutIt();             //MAKE THIS LINE EASY TO MISS                }                //USE THIS INDENTATION INSTEAD                if ((condition1 && condition2)                || (condition3 && condition4)                ||!(condition5 && condition6)) {                doSomethingAboutIt();                }                //OR USE THIS                if ((condition1 && condition2) || (condition3 && condition4)                ||!(condition5 && condition6)) {                doSomethingAboutIt();                }                

     

    這里有三種可行的方法用于處理三元運算表達式:

      alpha = (aLongBooleanExpression) ? beta : gamma;                alpha = (aLongBooleanExpression) ? beta                : gamma;                alpha = (aLongBooleanExpression)                ? beta                : gamma;                

     

    5 注釋(Comments)

    Java程序有兩類(lèi)注釋?zhuān)簩?shí)現注釋(implementation comments)和文檔注釋(document comments)。實(shí)現注釋是那些在C++中見(jiàn)過(guò)的,使用/*...*/和//界定的注釋。文檔注釋(被稱(chēng)為"doc comments")是Java獨有的,并由/**...*/界定。文檔注釋可以通過(guò)javadoc工具轉換成HTML文件。

    實(shí)現注釋用以注釋代碼或者實(shí)現細節。文檔注釋從實(shí)現自由(implementation-free)的角度描述代碼的規范。它可以被那些手頭沒(méi)有源碼的開(kāi)發(fā)人員讀懂。

    注釋?xiě)挥脕?lái)給出代碼的總括,并提供代碼自身沒(méi)有提供的附加信息。注釋?xiě)搩H包含與閱讀和理解程序有關(guān)的信息。例如,相應的包如何被建立或位于哪個(gè)目錄下之類(lèi)的信息不應包括在注釋中。

    在注釋里,對設計決策中重要的或者不是顯而易見(jiàn)的地方進(jìn)行說(shuō)明是可以的,但應避免提供代碼中己清晰表達出來(lái)的重復信息。多余的的注釋很容易過(guò)時(shí)。通常應避免那些代碼更新就可能過(guò)時(shí)的注釋。

    注意:頻繁的注釋有時(shí)反映出代碼的低質(zhì)量。當你覺(jué)得被迫要加注釋的時(shí)候,考慮一下重寫(xiě)代碼使其更清晰。

    注釋不應寫(xiě)在用星號或其他字符畫(huà)出來(lái)的大框里。注釋不應包括諸如制表符和回退符之類(lèi)的特殊字符。

    5.1 實(shí)現注釋的格式(Implementation Comment Formats)

    程序可以有4種實(shí)現注釋的風(fēng)格:塊(block)、單行(single-line)、尾端(trailing)和行末(end-of-line)。

    5.1.1 塊注釋(Block Comments)

    塊注釋通常用于提供對文件,方法,數據結構和算法的描述。塊注釋被置于每個(gè)文件的開(kāi)始處以及每個(gè)方法之前。它們也可以被用于其他地方,比如方法內部。在功能和方法內部的塊注釋?xiě)摵退鼈兯枋龅拇a具有一樣的縮進(jìn)格式。

    塊注釋之首應該有一個(gè)空行,用于把塊注釋和代碼分割開(kāi)來(lái),比如:

      /*                * Here is a block comment.                */                

     

    塊注釋可以以/*-開(kāi)頭,這樣indent(1)就可以將之識別為一個(gè)代碼塊的開(kāi)始,而不會(huì )重排它。

      /*-                * Here is a block comment with some very special                * formatting that I want indent(1) to ignore.                *                *    one                *        two                *            three                */                

     

    注意:如果你不使用indent(1),就不必在代碼中使用/*-,或為他人可能對你的代碼運行indent(1)作讓步。

    參見(jiàn)"

    5.1.2 單行注釋(Single-Line Comments)

    短注釋可以顯示在一行內,并與其后的代碼具有一樣的縮進(jìn)層級。如果一個(gè)注釋不能在一行內寫(xiě)完,就該采用塊注釋(參見(jiàn)"

      if (condition) {                /* Handle the condition. */                ...                }                

     

    5.1.3 尾端注釋(Trailing Comments)

    極短的注釋可以與它們所要描述的代碼位于同一行,但是應該有足夠的空白來(lái)分開(kāi)代碼和注釋。若有多個(gè)短注釋出現于大段代碼中,它們應該具有相同的縮進(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)

    注釋界定符"http://",可以注釋掉整行或者一行中的一部分。它一般不用于連續多行的注釋文本;然而,它可以用來(lái)注釋掉連續多行的代碼段。以下是所有三種風(fēng)格的例子:

      if (foo > 1) {                // Do a double-flip.                ...                }                else {                return false;          // Explain why here.                }                //if (bar > 1) {                //                //    // Do a triple-flip.                //    ...                //}                //else {                //    return false;                //}                

     

    5.2 文檔注釋(Documentation Comments)

    注意:此處描述的注釋格式之范例,參見(jiàn)"

    若想了解更多,參見(jiàn)"How to Write Doc Comments for Javadoc",其中包含了有關(guān)文檔注釋標記的信息(@return, @param, @see):

    http://java.sun.com/javadoc/writingdoccomments/index.html

    若想了解更多有關(guān)文檔注釋和javadoc的詳細資料,參見(jiàn)javadoc的主頁(yè):

    http://java.sun.com/javadoc/index.html

    文檔注釋描述Java的類(lèi)、接口、構造器,方法,以及字段(field)。每個(gè)文檔注釋都會(huì )被置于注釋定界符/**...*/之中,一個(gè)注釋對應一個(gè)類(lèi)、接口或成員。該注釋?xiě)挥诼暶髦埃?/p>

      /**                * The Example class provides ...                */                public class Example { ...                

     

    注意頂層(top-level)的類(lèi)和接口是不縮進(jìn)的,而其成員是縮進(jìn)的。描述類(lèi)和接口的文檔注釋的第一行(/**)不需縮進(jìn);隨后的文檔注釋每行都縮進(jìn)1格(使星號縱向對齊)。成員,包括構造函數在內,其文檔注釋的第一行縮進(jìn)4格,隨后每行都縮進(jìn)5格。

    若你想給出有關(guān)類(lèi)、接口、變量或方法的信息,而這些信息又不適合寫(xiě)在文檔中,則可使用實(shí)現塊注釋(見(jiàn)5.1.1)或緊跟在聲明后面的單行注釋(見(jiàn)5.1.2)。例如,有關(guān)一個(gè)類(lèi)實(shí)現的細節,應放入緊跟在類(lèi)聲明后面的實(shí)現塊注釋中,而不是放在文檔注釋中。

    文檔注釋不能放在一個(gè)方法或構造器的定義塊中,因為Java會(huì )將位于文檔注釋之后的第一個(gè)聲明與其相關(guān)聯(lián)。

    6 聲明(Declarations)

    6.1 每行聲明變量的數量(Number Per Line)

    推薦一行一個(gè)聲明,因為這樣以利于寫(xiě)注釋。亦即,

      int level;  // indentation level                int size;   // size of table                

     

    要優(yōu)于,

    int level, size;

    不要將不同類(lèi)型變量的聲明放在同一行,例如:

      int foo,  fooarray[];   //WRONG!                

     

    注意:上面的例子中,在類(lèi)型和標識符之間放了一個(gè)空格,另一種被允許的替代方式是使用制表符:

      int		level;         // indentation level                int		size;          // size of table                Object	currentEntry;  // currently selected table entry                

     

    6.2 初始化(Initialization)

    盡量在聲明局部變量的同時(shí)初始化。唯一不這么做的理由是變量的初始值依賴(lài)于某些先前發(fā)生的計算。

    6.3 布局(Placement)

    只在代碼塊的開(kāi)始處聲明變量。(一個(gè)塊是指任何被包含在大括號"{"和"}"中間的代碼。)不要在首次用到該變量時(shí)才聲明之。這會(huì )把注意力不集中的程序員搞糊涂,同時(shí)會(huì )妨礙代碼在該作用域內的可移植性。

      void myMethod() {                int int1 = 0;         // beginning of method block                if (condition) {                int int2 = 0;     // beginning of "if" block                ...                }                }                

     

    該規則的一個(gè)例外是for循環(huán)的索引變量

      for (int i = 0; i < maxLoops; i++) { ... }                

     

    避免聲明的局部變量覆蓋上一級聲明的變量。例如,不要在內部代碼塊中聲明相同的變量名:

      int count;                ...                myMethod() {                if (condition) {                int count = 0;     // AVOID!                ...                }                ...                }                

     

    6.4 類(lèi)和接口的聲明(Class and Interface Declarations)

    當編寫(xiě)類(lèi)和接口是,應該遵守以下格式規則:

    - 在方法名與其參數列表之前的左括號"("間不要有空格
    - 左大括號"{"位于聲明語(yǔ)句同行的末尾
    - 右大括號"}"另起一行,與相應的聲明語(yǔ)句對齊,除非是一個(gè)空語(yǔ)句,"}"應緊跟在"{"之后

      class Sample extends Object {                int ivar1;                int ivar2;                Sample(int i, int j) {                ivar1 = i;                ivar2 = j;                }                int emptyMethod() {}                ...                }                
    - 方法與方法之間以空行分隔

     

    7 語(yǔ)句(Statements)

    7.1 簡(jiǎn)單語(yǔ)句(Simple Statements)

    每行至多包含一條語(yǔ)句,例如:

      argv++;       // Correct                argc--;       // Correct                argv++; argc--;       // AVOID!                

     

    7.2 復合語(yǔ)句(Compound Statements)

    復合語(yǔ)句是包含在大括號中的語(yǔ)句序列,形如"{ 語(yǔ)句 }"。例如下面各段。

    - 被括其中的語(yǔ)句應該較之復合語(yǔ)句縮進(jìn)一個(gè)層次
    - 左大括號"{"應位于復合語(yǔ)句起始行的行尾;右大括號"}"應另起一行并與復合語(yǔ)句首行對齊。
    - 大括號可以被用于所有語(yǔ)句,包括單個(gè)語(yǔ)句,只要這些語(yǔ)句是諸如if-else或for控制結構的一部分。這樣便于添加語(yǔ)句而無(wú)需擔心由于忘了加括號而引入bug。

    7.3 返回語(yǔ)句(return Statements)

    一個(gè)帶返回值的return語(yǔ)句不使用小括號"()",除非它們以某種方式使返回值更為顯見(jiàn)。例如:

      return;                return myDisk.size();                return (size ? size : defaultSize);                

     

    7.4 if,if-else,if else-if else語(yǔ)句(if, if-else, if else-if else Statements)

    if-else語(yǔ)句應該具有如下格式:

      if (condition) {                statements;                }                if (condition) {                statements;                } else {                statements;                }                if (condition) {                statements;                } else if (condition) {                statements;                } else{                statements;                }                

     

    注意:if語(yǔ)句總是用"{"和"}"括起來(lái),避免使用如下容易引起錯誤的格式:

      if (condition) //AVOID! THIS OMITS THE BRACES {}!                statement;                

     

    7.5 for語(yǔ)句(for Statements)

    一個(gè)for語(yǔ)句應該具有如下格式:

      for (initialization; condition; update) {                statements;                }                

     

    一個(gè)空的for語(yǔ)句(所有工作都在初始化,條件判斷,更新子句中完成)應該具有如下格式:

      for (initialization; condition; update);                

     

    當在for語(yǔ)句的初始化或更新子句中使用逗號時(shí),避免因使用三個(gè)以上變量,而導致復雜度提高。若需要,可以在for循環(huán)之前(為初始化子句)或for循環(huán)末尾(為更新子句)使用單獨的語(yǔ)句。

    7.6 while語(yǔ)句(while Statements)

    一個(gè)while語(yǔ)句應該具有如下格式

      while (condition) {                statements;                }                

     

    一個(gè)空的while語(yǔ)句應該具有如下格式:

      while (condition);                

     

    7.7 do-while語(yǔ)句(do-while Statements)

    一個(gè)do-while語(yǔ)句應該具有如下格式:

      do {                statements;                } while (condition);                

     

    7.8 switch語(yǔ)句(switch Statements)

    一個(gè)switch語(yǔ)句應該具有如下格式:

      switch (condition) {                case ABC:                statements;                /* falls through */                case DEF:                statements;                break;                case XYZ:                statements;                break;                default:                statements;                break;                }                

     

    每當一個(gè)case順著(zhù)往下執行時(shí)(因為沒(méi)有break語(yǔ)句),通常應在break語(yǔ)句的位置添加注釋。上面的示例代碼中就包含注釋/* falls through */。

    7.9 try-catch語(yǔ)句(try-catch Statements)

    一個(gè)try-catch語(yǔ)句應該具有如下格式:

      try {                statements;                } catch (ExceptionClass e) {                statements;                }                

     

    一個(gè)try-catch語(yǔ)句后面也可能跟著(zhù)一個(gè)finally語(yǔ)句,不論try代碼塊是否順利執行完,它都會(huì )被執行。

      try {                statements;                } catch (ExceptionClass e) {                statements;                } finally {                statements;                }                

     

    8 空白(White Space)

    8.1 空行(Blank Lines)

    空行將邏輯相關(guān)的代碼段分隔開(kāi),以提高可讀性。

    下列情況應該總是使用兩個(gè)空行:

    - 一個(gè)源文件的兩個(gè)片段(section)之間
    - 類(lèi)聲明和接口聲明之間

    下列情況應該總是使用一個(gè)空行:

    - 兩個(gè)方法之間
    - 方法內的局部變量和方法的第一條語(yǔ)句之間
    - 塊注釋?zhuān)▍⒁?jiàn)"
    - 一個(gè)方法內的兩個(gè)邏輯段之間,用以提高可讀性

    8.2 空格(Blank Spaces)

    下列情況應該使用空格:

    - 一個(gè)緊跟著(zhù)括號的關(guān)鍵字應該被空格分開(kāi),例如:

      while (true) {                ...                }                
    注意:空格不應該置于方法名與其左括號之間。這將有助于區分關(guān)鍵字和方法調用。
    - 空白應該位于參數列表中逗號的后面
    - 所有的二元運算符,除了".",應該使用空格將之與操作數分開(kāi)。一元操作符和操作數之間不因該加空格,比如:負號("-")、自增("++")和自減("--")。例如:
        a += c + d;                a = (a + b) / (c * d);                while (d++ = s++) {                n++;                }                printSize("size is " + foo + "\n");                
    - for語(yǔ)句中的表達式應該被空格分開(kāi),例如:
        for (expr1; expr2; expr3)                
    - 強制轉型后應該跟一個(gè)空格,例如:
        myMethod((byte) aNum, (Object) x);                myMethod((int) (cp + 5), ((int) (i + 3)) + 1);                

     

    9 命名規范(Naming Conventions)

    命名規范使程序更易讀,從而更易于理解。它們也可以提供一些有關(guān)標識符功能的信息,以助于理解代碼,例如,不論它是一個(gè)常量,包,還是類(lèi)。

    標識符類(lèi)型 命名規則 例子
    包(Packages) 一個(gè)唯一包名的前綴總是全部小寫(xiě)的ASCII字母并且是一個(gè)頂級域名,通常是com,edu,gov,mil,net,org,或1981年ISO 3166標準所指定的標識國家的英文雙字符代碼。包名的后續部分根據不同機構各自?xún)炔康拿幏抖槐M相同。這類(lèi)命名規范可能以特定目錄名的組成來(lái)區分部門(mén)(department),項目(project),機器(machine),或注冊名(login names)。 com.sun.eng
    com.apple.quicktime.v2
    edu.cmu.cs.bovik.cheese
    類(lèi)(Classes) 命名規則:類(lèi)名是個(gè)一名詞,采用大小寫(xiě)混合的方式,每個(gè)單詞的首字母大寫(xiě)。盡量使你的類(lèi)名簡(jiǎn)潔而富于描述。使用完整單詞,避免縮寫(xiě)詞(除非該縮寫(xiě)詞被更廣泛使用,像URL,HTML) class Raster;
    class ImageSprite;
    接口(Interfaces) 命名規則:大小寫(xiě)規則與類(lèi)名相似 interface RasterDelegate;
    interface Storing;
    方法(Methods) 方法名是一個(gè)動(dòng)詞,采用大小寫(xiě)混合的方式,第一個(gè)單詞的首字母小寫(xiě),其后單詞的首字母大寫(xiě)。 run();
    runFast();
    getBackground();
    變量(Variables) 除了變量名外,所有實(shí)例,包括類(lèi),類(lèi)常量,均采用大小寫(xiě)混合的方式,第一個(gè)單詞的首字母小寫(xiě),其后單詞的首字母大寫(xiě)。變量名不應以下劃線(xiàn)或美元符號開(kāi)頭,盡管這在語(yǔ)法上是允許的。
    變量名應簡(jiǎn)短且富于描述。變量名的選用應該易于記憶,即,能夠指出其用途。盡量避免單個(gè)字符的變量名,除非是一次性的臨時(shí)變量。臨時(shí)變量通常被取名為i,j,k,m和n,它們一般用于整型;c,d,e,它們一般用于字符型。
    char c;
    int i;
    float myWidth;
    實(shí)例變量(Instance Variables) 大小寫(xiě)規則和變量名相似,除了前面需要一個(gè)下劃線(xiàn) int _employeeId;
    String _name;
    Customer _customer;
    常量(Constants) 類(lèi)常量和ANSI常量的聲明,應該全部大寫(xiě),單詞間用下劃線(xiàn)隔開(kāi)。(盡量避免ANSI常量,容易引起錯誤) static final int MIN_WIDTH = 4;
    static final int MAX_WIDTH = 999;
    static final int GET_THE_CPU = 1;

    10 編程慣例(Programming Practices)

    10.1 提供對實(shí)例以及類(lèi)變量的訪(fǎng)問(wèn)控制(Providing Access to Instance and Class Variables)

    若沒(méi)有足夠理由,不要把實(shí)例或類(lèi)變量聲明為公有。通常,實(shí)例變量無(wú)需顯式的設置(set)和獲取(gotten),通常這作為方法調用的邊緣效應 (side effect)而產(chǎn)生。

    一個(gè)具有公有實(shí)例變量的恰當例子,是類(lèi)僅作為數據結構,沒(méi)有行為。亦即,若你要使用一個(gè)結構(struct)而非一個(gè)類(lèi)(如果java支持結構的話(huà)),那么把類(lèi)的實(shí)例變量聲明為公有是合適的。

    10.2 引用類(lèi)變量和類(lèi)方法(Referring to Class Variables and Methods)

    避免用一個(gè)對象訪(fǎng)問(wèn)一個(gè)類(lèi)的靜態(tài)變量和方法。應該用類(lèi)名替代。例如:

      classMethod();             //OK                AClass.classMethod();      //OK                anObject.classMethod();    //AVOID!                

     

    10.3 常量(Constants)

    位于for循環(huán)中作為計數器值的數字常量,除了-1,0和1之外,不應被直接寫(xiě)入代碼。

    10.4 變量賦值(Variable Assignments)

    避免在一個(gè)語(yǔ)句中給多個(gè)變量賦相同的值。它很難讀懂。例如:

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

     

    不要將賦值運算符用在容易與相等關(guān)系運算符混淆的地方。例如:

      if (c++ = d++) {        // AVOID! (Java disallows)                ...                }                

     

    應該寫(xiě)成

      if ((c++ = d++) != 0) {                ...                }                

     

    不要使用內嵌(embedded)賦值運算符試圖提高運行時(shí)的效率,這是編譯器的工作。例如:

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

     

    應該寫(xiě)成

      a = b + c;                d = a + r;                

     

    10.5 其它慣例(Miscellaneous Practices)

    10.5.1 圓括號(Parentheses)

    一般而言,在含有多種運算符的表達式中使用圓括號來(lái)避免運算符優(yōu)先級問(wèn)題,是個(gè)好方法。即使運算符的優(yōu)先級對你而言可能很清楚,但對其他人未必如此。你不能假設別的程序員和你一樣清楚運算符的優(yōu)先級。

      if (a == b && c == d)     // AVOID!                if ((a == b) && (c == d))  // RIGHT                

     

    10.5.2 返回值(Returning Values)

    設法讓你的程序結構符合目的。例如:

      if (booleanExpression) {                return true;                } else {                return false;                }                

     

    應該代之以如下方法:

      return booleanExpression;                

     

    類(lèi)似地:

      if (condition) {                return x;                }                return y;                

     

    應該寫(xiě)做:

      return (condition ? x : y);                

     

    10.5.3 條件運算符"?"前的表達式(Expressions before ‘?‘ in the Conditional Operator)

    如果一個(gè)包含二元運算符的表達式出現在三元運算符" ? : "的"?"之前,那么應該給表達式添上一對圓括號。例如:

      (x >= 0) ? x : -x;                

     

    10.5.4 特殊注釋(Special Comments)

    在注釋中使用XXX來(lái)標識某些未實(shí)現(bogus)的但可以工作(works)的內容。用FIXME來(lái)標識某些假的和錯誤的內容。

    11 代碼范例(Code Examples)

    11.1 Java源文件范例(Java Source File Example)

    下面的例子,展示了如何合理布局一個(gè)包含單一公共類(lèi)的Java源程序。接口的布局與其相似。更多信息參見(jiàn)"

    /*                * @(#)Blah.java        1.82 99/03/18                *                * Copyright (c) 1994-1999 Sun Microsystems, Inc.                * 901 San Antonio Road, Palo Alto, California, 94303, U.S.A.                * 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.                */                package java.blah;                import java.blah.blahdy.BlahBlah;                /**                * Class description goes here.                *                * @version 	1.82 18 Mar 1999                * @author 	Firstname Lastname                */                public class Blah extends SomeClass {                /* A class implementation comment can go here. */                /** classVar1 documentation comment */                public static int classVar1;                /**                * classVar2 documentation comment that happens to be                * more than one line long                */                private static Object classVar2;                /** instanceVar1 documentation comment */                public Object instanceVar1;                /** instanceVar2 documentation comment */                protected int instanceVar2;                /** instanceVar3 documentation comment */                private Object[] instanceVar3;                /**                * ...constructor Blah documentation comment...                */                public Blah() {                // ...implementation goes here...                }                /**                * ...method doSomething documentation comment...                */                public void doSomething() {                // ...implementation goes here...                }                /**                * ...method doSomethingElse documentation comment...                * @param someParam description                */                public void doSomethingElse(Object someParam) {                // ...implementation goes here...                }                }                
    本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
    打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
    猜你喜歡
    類(lèi)似文章
    ADTD0511_代碼規范(Java)
    Java代碼規范總結
    代碼書(shū)寫(xiě)規范(Java)
    我要注意的Java編碼規范
    十套技巧提升你的Python編程水平
    20180925-5 代碼規范
    更多類(lèi)似文章 >>
    生活服務(wù)
    分享 收藏 導長(cháng)圖 關(guān)注 下載文章
    綁定賬號成功
    后續可登錄賬號暢享VIP特權!
    如果VIP功能使用有故障,
    可點(diǎn)擊這里聯(lián)系客服!

    聯(lián)系客服

    欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久