Java編程規(guī)范參考模板_第1頁
Java編程規(guī)范參考模板_第2頁
Java編程規(guī)范參考模板_第3頁
Java編程規(guī)范參考模板_第4頁
Java編程規(guī)范參考模板_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、Java編碼規(guī)范制定本編程格式的目的是為了使軟件可讀性好、兼容性好、易維護(hù)等等。注:加(*)者為重要保證要求。一、命名規(guī)范1.1 Package 的命名(*)Package 的名字應(yīng)由一個小寫單詞組成。為了保證包的唯一性,一般以公司國際域名開頭。例如:com.elanbase.db。1.2 Class 的命名(*)Class 的名字必須由大寫字母開頭,并且其它單詞的首寫字母也要大寫。例如:DbAccess。1.3 Class 成員屬性及變量的命名(*)變量/成員屬性的名字用一個小寫字母開頭,后面的單詞以大寫字母開頭。例如:private String lastName;1.4 常量的命名(*)

2、Java 里的常量,是用static final 修飾的,應(yīng)該用全大寫加下劃線命名,并且常量名應(yīng)盡量指出完整含義。如:public static final String ORACLE_DB_DRIVER = oracle.jdbc.driver.OracleDriver ;1.5 數(shù)組的命名數(shù)組應(yīng)該總是用下面的形式來命名:byte buffs;而不是:byte buffs;1.6 方法的參數(shù)和變量的命名規(guī)范一致,且應(yīng)使用有意義的參數(shù)命名,如果可能的話,使用和要賦值的1 / 12屬性一樣的名字,如:setCounter(int size)this.size = size;1.7 方法命名(*)

3、用一個小寫字母開頭,后面的單詞以大寫字母開頭。應(yīng)意義明確,對于屬性的存取方法,應(yīng)使用getXXX()和setXXX()名稱,以isXXX(),hasXXX()來命名返回值為boolean 類型的方法。1.8 一般命名注意事項(xiàng)a. 用有意義的名字命名變量首先,用完整的英語單詞或約定俗成的簡寫命名變量,鼓勵多用約定俗成的簡寫命名變量。例如:public String zipCodepublic int errNob. 用復(fù)數(shù)命名Collection 類變量Collection, 包括數(shù)組,Vector 等。命名時(shí)使用復(fù)數(shù):例如:public Collection customers二、Java 源

4、文件樣式Java(*.java) 源文件應(yīng)遵守如下的樣式規(guī)則2.1 Class 代碼布局:package Javadoc 注釋或者其它文件頭注釋類聲明Fields 聲明空行構(gòu)造函數(shù)空行克隆方法空行其它方法(不包括main)空行內(nèi)部(Inner)類空行main()方法2.2 版權(quán)信息版權(quán)信息必須在java 文件的開頭,例如:/* * Title:編碼過濾器 * Description: 該類實(shí)現(xiàn)把request請求編碼為web.xml文件中所配置的字符集 * Copyright: Copyright (c) 2003 * Company: 蘭貝斯信息科技 * author 曾小平 * versi

5、on 1.0 */ 2.3 Package/Imports(*)package 行要在版權(quán)信息之前,中間空一行。將import 的classes 歸類,按順序羅列:a. Java 標(biāo)準(zhǔn)類(java.*)b. Java 擴(kuò)充類(javax.*)c. 第三方類d. 你的應(yīng)用程序的類每一類空一行。注意在第三方類里進(jìn)行注釋,說明它們的來源。如果import 行中包含了同一個包中的多個類,不推薦用import pakage.* 來處理,推薦把要用的類一一import出來。這樣程序用到哪些類就可以非常清楚的看出來,有利于代碼的維護(hù),增強(qiáng)了代碼的可讀性。例如:import java.util.Observa

6、ble;import java.util.Date;import javax.sql.Connection;/Apache Xercesimport org.apache.xml.*;import org.apache.xerces.dom.*;/Application classesimport com.elanbase.db.DbAccess2.4 Class Fields類的成員變量:/* Packet counters*/protected int packets;public 的成員變量必須以生成文檔(JavaDoc)的方式進(jìn)行注釋(/* */)。protected、private

7、和package 定義的成員變量如果名字含義明確的話,可以沒有注釋。Field 定義可遵從以下順序:a. public 常量b. public 變量c. protected 常量d. protected 變量e. package 常量f. package 變量g. private 常量h. private 變量2.5 存取方法(getter,setter)接下來是類成員變量的存取的方法。2.6 構(gòu)造方法(*)重載的構(gòu)造方法應(yīng)該用遞增的方式寫(參數(shù)多的寫在后面)。public CounterSet()this(10);public CounterSet(int size)this.size =

8、size;2.7 克隆方法如果這個類是可以被克隆的,就應(yīng)實(shí)現(xiàn)clone 方法:public Object clone() try CounterSet obj = (CounterSet)super.clone();obj.packets = (int)packets.clone();obj.size = size;return obj;catch(CloneNotSupportedException e) throw new InternalError(Unexpected CloneNotSUpportedException: +e.getMessage();2.8 類方法下面開始寫類方法

9、:/* Set the packet counters* (such as when restoring from a database)*/protected final void setArray(int r1, int r2, int r3, int r4)throws IllegalArgumentException / Ensure the arrays are of equal size/if (r1.length != r2.length | r1.length != r3.length | r1.length !=r4.length)throw new IllegalArgum

10、entException(Arrays must be of the same size);System.arraycopy(r1, 0, r3, 0, r1.length);System.arraycopy(r2, 0, r4, 0, r1.length);2.9 toString 方法每一個類都最好定義toString 方法:public String toString() String retval = CounterSet: ;for (int i = 0; i 0) i + ; / 正確, 單獨(dú)作為一行不推薦使用:if (i0) i + ; / 錯誤, 和 在同一行或if (i0)

11、/ 錯誤, 應(yīng)在上一行末尾。i + ; 語句永遠(yuǎn)單獨(dú)作為一行。3.8 if else 語句(*)多條件連續(xù)判斷語句應(yīng)按以下格式書寫:if ( ) else if () else 應(yīng)注意if 語句總應(yīng)使用括號,要避免以下容易出錯的寫法:if (condition) / 避免。此處略去了!statement;或if (condition) statement; 3.9 括號左括號和后一個字符之間不應(yīng)該出現(xiàn)空格, 同樣, 右括號和前一個字符之間也不應(yīng)該出現(xiàn)空格。下面的例子說明括號和空格的錯誤及正確使用:CallProc( AParameter ); / 錯誤CallProc(AParameter);

12、 / 正確不要在語句中使用無意義的括號。括號只應(yīng)該為達(dá)到某種目的(如語法要求或增加程序可讀性)而出現(xiàn)在源代碼中。下面的例子說明錯誤和正確的用法:if (I) = 42) / 錯誤,括號毫無意義if (I = 42) or (J = 42) / 正確,的確需要括號3.10 語句每行只能包括一句代碼。如:argv+; / 正確argc-; / 正確argv+; argc-; / 避免!3.11 使用空格空格應(yīng)依如下規(guī)則使用:1關(guān)鍵字與括號之間應(yīng)加一空格(*),如:(while 與小括號間有空格)while (true) .注意在方法名和左括號之間不應(yīng)加空格,這樣有助于區(qū)分關(guān)鍵字和方法調(diào)用。2參數(shù)列

13、表中逗號后面應(yīng)加一個空格(*)。3操作數(shù)與操作符之間應(yīng)該加一空格,除了“.”操作符和一元操作符,即“+”和“”。(*)例:a += c + d;a = (a + b) / (c * d);while (d+ = s+) n+;printSize(size is + foo + n);4for 語句中的表達(dá)式應(yīng)以空格分開(*):for (expr1; expr2; expr3)5強(qiáng)制類型轉(zhuǎn)換應(yīng)加空格,如:myMethod(byte) aNum, (Object) x);myMethod(int) (cp + 5), (int) (i + 3)+ 1);四、程序編寫規(guī)范4.1 使用方法來訪問實(shí)例變

14、量和類變量(*)如果沒有很好的理由,一般不應(yīng)將實(shí)例變量或類變量設(shè)為public ,將變量設(shè)為public的典型應(yīng)用是此類代表一個“數(shù)據(jù)結(jié)構(gòu)”,而不包含任何方法。4.2 引用類變量和類方法(*)避免使用對象引用來訪問類(static)變量或類方法,而應(yīng)使用類名來訪問。如:classMethod(); /OKAClass.classMethod(); /OKanObject.classMethod(); / 避免!4.3 常量(*)數(shù)字常量不應(yīng)直接在編碼中出現(xiàn),除非是for 循環(huán)中用于計(jì)數(shù)的1,0,或1。字符串常量盡量不直接在編碼中出現(xiàn)。4.4 ?前的邏輯運(yùn)算表達(dá)式?前的邏輯運(yùn)算表達(dá)式應(yīng)以括號括起

15、,如:(x = 0) ? x : -x;4.5 特殊注釋注釋用XXX 表示當(dāng)前是偽碼,但可以工作,用FIXME 標(biāo)記有問題的部分。(Use XXX ina comment to flag something that is bogus but works. Use FIXME to flag something thatis bogus and broken.)4.6 例外申明的錯誤應(yīng)該拋出一個RuntimeException 或者派生的例外。頂層的main()函數(shù)應(yīng)該截獲所有的例外,并且打印(或者記錄在日志中)在屏幕上。五、編程實(shí)踐問題5.1 exit()exit 除了在main 中可以被調(diào)

16、用外,其他的地方不應(yīng)該調(diào)用。因?yàn)檫@樣做不給任何代碼機(jī)會來截獲退出。一個類似后臺服務(wù)的程序不應(yīng)該因?yàn)槟骋粋€庫模塊決定了要退出就退出。5.2 垃圾收集JAVA使用成熟的后臺垃圾收集技術(shù)來代替引用計(jì)數(shù)。但是這樣會導(dǎo)致一個問題:你必須在使用完對象的實(shí)例以后進(jìn)行清場工作。例如: FileOutputStream fos = new FileOutputStream(projectFile) ; project.save(fos, IDE Project File) ; fos.close() ;fos = null ;記住!必須在使用完對象的實(shí)例以后將其關(guān)閉并且將其設(shè)置為null。5.3 final 類

17、絕對不要因?yàn)樾阅艿脑驅(qū)㈩惗x為final 的(除非程序的框架要求)如果一個類還沒有準(zhǔn)備好被繼承,最好在類文檔中注明,而不要將她定義為final 的。這是因?yàn)闆]有人可以保證會不會由于什么原因需要繼承它。5.4 性能在寫代碼的時(shí)候,從頭至尾都應(yīng)該考慮性能問題。這不是說時(shí)間都應(yīng)該浪費(fèi)在優(yōu)化代碼上,而是我們時(shí)刻應(yīng)該提醒自己要注意代碼的效率。比如:如果沒有時(shí)間來實(shí)現(xiàn)一個高效的算法,那么我們應(yīng)該在文檔中記錄下來,以便在以后有空的時(shí)候再來實(shí)現(xiàn)她。不是所有的人都同意在寫代碼的時(shí)候應(yīng)該優(yōu)化性能這個觀點(diǎn),他們認(rèn)為性能優(yōu)化的問題應(yīng)該在項(xiàng)目的后期再去考慮,也就是在程序的輪廓已經(jīng)實(shí)現(xiàn)了以后。應(yīng)注意:不必要的對象構(gòu)造不

18、要在循環(huán)中構(gòu)造和釋放對象5.5 使用StringBuffer 對象在處理String 的時(shí)候要盡量使用StringBuffer 類,StringBuffer 類是構(gòu)成String 類的基礎(chǔ)。String 類將StringBuffer 類封裝了起來,(以花費(fèi)更多時(shí)間為代價(jià))為開發(fā)人員提供了一個安全的接口。當(dāng)我們在構(gòu)造字符串的時(shí)候,我們應(yīng)該用StringBuffer 來實(shí)現(xiàn)大部分的工作,當(dāng)工作完成后將StringBuffer 對象再轉(zhuǎn)換為需要的String 對象。比如:如果有一個字符串必須不斷地在其后添加許多字符來完成構(gòu)造,那么我們應(yīng)該使用StringBuffer 對象和她的append() 方法。如果我

溫馨提示

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

最新文檔

評論

0/150

提交評論