Java编码规范,在您进行编码之前应该阅读的规范
生活随笔
收集整理的這篇文章主要介紹了
Java编码规范,在您进行编码之前应该阅读的规范
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
為什么80%的碼農(nóng)都做不了架構(gòu)師?>>> ??
本文轉(zhuǎn)載于:http://www.web3d.com.cn/new/teach/java3d/2006/11/13/363276161.html
?
Java編碼規(guī)范 說明 1.1 為什么要有編碼規(guī)范 編碼規(guī)范對于程序員而言尤為重要,有以下幾個(gè)原因: 一個(gè)軟件的生命周期中,80%的花費(fèi)在于維護(hù)。 幾乎沒有任何一個(gè)軟件,在其整個(gè)生命周期中,均由最初的開發(fā)人員來維護(hù)。 編碼規(guī)范可以改善軟件的可讀性,可以讓程序員盡快而徹底地理解新的代碼。
如果你將源碼作為產(chǎn)品發(fā)布,就需要確任它是否被很好的打包并且清晰無誤,一如你已構(gòu)建的其它任何產(chǎn)品。 為了執(zhí)行規(guī)范,每個(gè)軟件開發(fā)人員必須一致遵守編碼規(guī)范。每個(gè)人!!! 1.2版權(quán)聲明 本文檔反映的是Sun MicroSystems公司,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)評論意見請發(fā)至shommel@eng.sun.com 2. 文件名(File Names) 這部分列出了常用的文件名及其后綴。 2.1 文件后綴(File Suffixes) Java程序使用下列文件后綴:
文件類別 文件后綴 Java源文件 .java
Java字節(jié)碼文件 .class
2.2 常用文件名(Common File Names)
常用的文件名包括:
文件名 用途
GNUmakefile makefiles的首選文件名。我們采用gnumake來創(chuàng)建(build)軟件。 README 概述特定目錄下所含內(nèi)容的文件的首選文件名 3. 文件組織(File Organization) 一個(gè)文件由被空行分割而成的段落以及標(biāo)識(shí)每個(gè)段落的可選注釋共同組成。超過2000行的程序難以閱讀,應(yīng)該盡量避免。“Java源文件范例”提供了一個(gè)布局合理的Java程序范例。 3.1 Java源文件(Java Source Files) 每個(gè)Java源文件都包含一個(gè)單一的公共類或接口。若私有類和接口與一個(gè)公共類相關(guān)聯(lián),可以將它們和公共類放入同一個(gè)源文件。公共類必須是這個(gè)文件中的第一個(gè)類或接口。 Java源文件還遵循以下規(guī)則: 開頭注釋(參見"開頭注釋")
包和引入語句(參見"包和引入語句")
類和接口聲明(參見"類和接口聲明") 3.1.1 開頭注釋(Beginning Comments) 所有的源文件都應(yīng)該在開頭有一個(gè)C語言風(fēng)格的注釋,其中列出類名、版本信息、日期和版權(quán)聲明: /*
* Classname
*
* Version information
*
* Date
*
* Copyright notice
*/ 3.1.2 包和引入語句(Package and Import Statements)
在多數(shù)Java源文件中,第一個(gè)非注釋行是包語句。在它之后可以跟引入語句。 例如:
package java.awt;
import java.awt.peer.CanvasPeer; 3.1.3 類和接口聲明(Class and Interface Declarations) 下表描述了類和接口聲明的各個(gè)部分以及它們出現(xiàn)的先后次序。參見“Java源文件范例”中一個(gè)包含注釋的例子。
類/接口聲明的各部分 注解 1、 類/接口文檔注釋(/**……*/) 該注釋中所需包含的信息,參見"文檔注釋"
2、 類或接口的聲明
3、 類/接口實(shí)現(xiàn)的注釋(/*……*/)如果有必要的話 該注釋應(yīng)包含任何有關(guān)整個(gè)類或接口的信息,而這些信息又不適合作為類/接口文檔注釋。
4、 類的(靜態(tài))變量 首先是類的公共變量,隨后是保護(hù)變量,再后是包一級別的變量(沒有訪問修飾符,access modifier),最后是私有變量。
5、 實(shí)例變量 首先是公共級別的,隨后是保護(hù)級別的,再后是包一級別的(沒有訪問修飾符),最后是私有級別的。
6、 構(gòu)造器 7、 方法 這些方法應(yīng)該按功能,而非作用域或訪問權(quán)限,分組。例如,一個(gè)私有的類方法可以置于兩個(gè)公有的實(shí)例方法之間。其目的是為了更便于閱讀和理解代碼。
4. 縮進(jìn)排版(Indentation) 4個(gè)空格常被作為縮進(jìn)排版的一個(gè)單位。縮進(jìn)的確切解釋并未詳細(xì)指定(空格 vs. 制表符)。一個(gè)制表符等于8個(gè)空格(而非4個(gè))。 4.1 行長度(Line Length) 盡量避免一行的長度超過80個(gè)字符,因?yàn)楹芏嘟K端和工具不能很好處理之。 注意:用于文檔中的例子應(yīng)該使用更短的行長,長度一般不超過70個(gè)字符。 4.2 換行(Wrapping Lines) 當(dāng)一個(gè)表達(dá)式無法容納在一行內(nèi)時(shí),可以依據(jù)如下一般規(guī)則斷開之: 在一個(gè)逗號(hào)后面斷開。 在一個(gè)操作符前面斷開。 寧可選擇較高級別(higher-level)的斷開,而非較低級別(lower-level)的斷開。 新的一行應(yīng)該與上一行同一級別表達(dá)式的開頭處對齊。 如果以上規(guī)則導(dǎo)致你的代碼混亂或者使你的代碼都堆擠在右邊,那就代之以縮進(jìn)8個(gè)空格。 以下是斷開方法調(diào)用的一些例子: someMethod(longExpression1, longExpression2, longExpression3,
longExpression4, longExpression5);
var = someMethod1(longExpression1,
someMethod2(longExpression2,
longExpression3)); 以下是兩個(gè)斷開算術(shù)表達(dá)式的例子。前者更好,因?yàn)閿嚅_處位于括號(hào)表達(dá)式的外邊,這是個(gè)較高級別的斷開。 longName1 = longName2 * (longName3 + longName4 - longName5)
+ 4 * longname6; //PREFFER
longName1 = longName2 * (longName3 + longName4
- longName5) + 4 * longname6; //AVOID 以下是兩個(gè)縮進(jìn)方法聲明的例子。前者是常規(guī)情形。后者若使用常規(guī)的縮進(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語句的換行通常使用8個(gè)空格的規(guī)則,因?yàn)槌R?guī)縮進(jìn)(4個(gè)空格)會(huì)使語句體看起來比較費(fè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();
}
這里有三種可行的方法用于處理三元運(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++中見過的,使用/*...*/和//界定的注釋。文檔注釋(被稱為“doc comments”)是Java獨(dú)有的,并由/**...*/界定。文檔注釋可以通過javadoc工具轉(zhuǎn)換成HTML文件。 實(shí)現(xiàn)注釋用以注釋代碼或者實(shí)現(xiàn)細(xì)節(jié)。文檔注釋從實(shí)現(xiàn)自由(implementation-free)的角度描述代碼的規(guī)范。它可以被那些手頭沒有源碼的開發(fā)人員讀懂。 注釋應(yīng)被用來給出代碼的總括,并提供代碼自身沒有提供的附加信息。注釋應(yīng)該僅包含與閱讀和理解程序有關(guān)的信息。例如,相應(yīng)的包如何被建立或位于哪個(gè)目錄下之類的信息不應(yīng)包括在注釋中。 在注釋里,對設(shè)計(jì)決策中重要的或者不是顯而易見的地方進(jìn)行說明是可以的,但應(yīng)避免提供代碼中己清晰表達(dá)出來的重復(fù)信息。多余的的注釋很容易過時(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 塊注釋(Block Comments) 塊注釋通常用于提供對文件,方法,數(shù)據(jù)結(jié)構(gòu)和算法的描述。塊注釋被置于每個(gè)文件的開始處以及每個(gè)方法之前。它們也可以被用于其他地方,比如方法內(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),就不必在代碼中使用/*-,或?yàn)樗丝赡軐δ愕拇a運(yùn)行indent(1)作讓步。
轉(zhuǎn)載于:https://my.oschina.net/CYZ/blog/32313
總結(jié)
以上是生活随笔為你收集整理的Java编码规范,在您进行编码之前应该阅读的规范的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: gps天线拆解图片_GPS天线原理
- 下一篇: 如何写好项目会议纪要?