JAVA編程規(guī)范初稿_第1頁
JAVA編程規(guī)范初稿_第2頁
JAVA編程規(guī)范初稿_第3頁
JAVA編程規(guī)范初稿_第4頁
JAVA編程規(guī)范初稿_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、JAVA編程規(guī)范初稿 作者:莊哲鋒命名規(guī)范: Package 的命名 Package 的名字應(yīng)該都是由一些小寫單詞組成。 一般使用公司的域名反寫開頭,如com.tongrong,各項(xiàng)目以其項(xiàng)目名稱作為三層包名,之后就是各個(gè)子模塊的名稱;公司構(gòu)件庫的命名以com.tongrong.code開頭,之后針對(duì)不通的用途區(qū)分子包,如com. tongrong.code.xml等。 Class 的命名 Class 的名字必須由大寫字母開頭而其他字母都小寫的單詞組成,每個(gè)單詞的首字母都必須大寫。類名應(yīng)盡量體現(xiàn)它的功能和類別,工具類的命名一般以Util或者Helper結(jié)尾。 如: AddUserAction

2、類別:控制類 Class 變量的命名 變量的名字必須用一個(gè)小寫字母開頭。后面的單詞用大寫字母開頭。一般是類型的首字母小寫。一個(gè)類(方法)中有多個(gè)引用時(shí)后面可加序號(hào),但必須加上注釋。如 addUserBPO /添加用戶的業(yè)務(wù)處理對(duì)象 Static Final 變量的命名 Static Final 變量的名字應(yīng)該都大寫(或者數(shù)字和_),并且指出完整含義。詞間用下劃線分開。如static final LOGIN_PAGE=”login.jsp” /登陸頁面。注意:一般靜態(tài)最終變量是不建議在接口里面定義(sun規(guī)范),而應(yīng)該在final class中定義。變量與參數(shù)的命名 參數(shù)和變量的命名必須體現(xiàn)出參

3、數(shù)或者變量的用途,命名方法和類的方法一致。參數(shù)必須用javadoc或者是/* */注釋,變量一行只能聲明一個(gè),而且必須在后面用 /注釋清楚(private,package)或者用/* */注釋(protected,public),如:SysUserDAO sysUserDAO 數(shù)組的命名 數(shù)組應(yīng)該總是用下面的方式來命名: 注意:一般后面加個(gè)s表復(fù)數(shù)。String names; 而不是:String names; 方法的參數(shù) 使用有意義的參數(shù)命名,如果可能的話,使用和要賦值的字段一樣的名字,注意要寫注釋,對(duì)于設(shè)置函數(shù)記得前面的this,方法參數(shù)一般不能多于4個(gè),否則用bean統(tǒng)一封裝:setSi

4、ze(int size) this.size = size; Java 文件樣式 所有的 Java(*.java) 文件都必須遵守如下的樣式規(guī)則版權(quán)信息 版權(quán)信息必須在 每個(gè)java 文件的開頭(一般不用javadoc方式,直接用多行注釋,可以在開發(fā)工具中設(shè)置,比如eclipse可以在窗口首選項(xiàng)java代碼模板 中設(shè)置),比如: Package/Imports package 行要在 import 行之前,import 中標(biāo)準(zhǔn)的包名要在本地的包名之前,而且按照字母順序排列,注意import的每個(gè)類都要具體指出包名,而不能用.*代替(使用類的導(dǎo)入可以借用工具的組織導(dǎo)入功能進(jìn)行,比如eclipse

5、中用快捷鍵ctrl+shift+O)。package com.startdragon.code.xml import java.util.Observable; import com.startdragon.code.util; 類的注釋 一般要描述類的功能,第一行簡(jiǎn)要描述類的功能,記得后面加”.”,接下來具體描述類的功能。一般在類的javadoc中要加上author和version標(biāo)記,一般在穩(wěn)定版發(fā)布前的version都設(shè)置為1.0,發(fā)布后可根據(jù)具體的情況修改??梢酝ㄟ^工具的模板輔助產(chǎn)生,eclipse中的設(shè)置方法如“版權(quán)信息”的設(shè)置。/* * 添加用戶業(yè)務(wù)處理對(duì)象. * Usage: A

6、ddUserBSImpl通過該類把一下相對(duì)來說比較負(fù)責(zé)的業(yè)務(wù)轉(zhuǎn)移到該類處理,通過 * 調(diào)用響應(yīng)的方法實(shí)現(xiàn)對(duì)應(yīng)的業(yè)務(wù)操作 * author weiconghui * version 1.0 */public class AddUserBPO 類定義 包含了在不同的行的 extends 和 implements,注意縮進(jìn)問題,一般類的行數(shù)不要超過1000,方法個(gè)數(shù)不要超過10。public class CounterSet extends Observable implements Cloneable 類的成員變量 Public,proceted 的成員變量必須生成文檔(JavaDoc)。priv

7、ate和 package 定義的成員變量除了名字含義要明確,還必須在后面用 “/” 注釋: 存取方法 類變量的存取的方法。它只是簡(jiǎn)單的用來將類的變量賦值獲取值的話,可以簡(jiǎn)單的寫在一行上,注意如果引用類變量,一般前面要加上this。/* * Get the counters * return an array containing the statistical data. This array has been * freshly allocated and can be modified by the caller. */ public int getPackets() return cop

8、yArray(packets, offset); public int getBytes() return copyArray(bytes, offset); public int getPackets() return packets; public void setPackets(int packets) this.packets = packets; 構(gòu)造函數(shù) 接下來是構(gòu)造函數(shù),它應(yīng)該用遞增的方式寫(參數(shù)多的寫在后面)。 按訪問級(jí)別遞減的方式寫,方法和參數(shù)另寫一行,這樣可以使方法和參數(shù)更易讀。Public CounterSet(int size) this.size = size; 克隆

9、方法 如果這個(gè)類是可以被克隆的,那么下一步就是 clone 方法(注意深度克隆的問題克隆,可參考Effective_Java):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: +

10、e.getMessage(); 類方法 類方法要注意寫注釋,一般對(duì)于public,protected的注釋要用javadoc形式,pachage,private訪問級(jí)別的要用 / 或者 /* */注釋。方法的順序是publicprotectedpackageprivate,要特別注意的是方法的行數(shù)一般不要超過150. public String toString() String retval = CounterSet: ; for (int i = 0; i 0) i + ; / 錯(cuò)誤, 和 在同一行 if (i0) i + ; / 正確, 單獨(dú)作為一行 和 語句永遠(yuǎn)單獨(dú)作為一行. 如果 語

11、句應(yīng)該縮進(jìn)到與其相對(duì)應(yīng)的 那一行相對(duì)齊的位置。 括號(hào) 左括號(hào)和后一個(gè)字符之間不應(yīng)該出現(xiàn)空格, 同樣, 右括號(hào)和前一個(gè)字符之間也不應(yīng)該出現(xiàn)空格. 下面的例子說明括號(hào)和空格的錯(cuò)誤及正確使用: CallProc( AParameter ); / 錯(cuò)誤 CallProc(AParameter); / 正確 不要在語句中使用無意義的括號(hào). 括號(hào)只應(yīng)該為達(dá)到某種目的而出現(xiàn)在源代碼中。下面的例子說明錯(cuò)誤和正確的用法: if (I) = 42) / 錯(cuò)誤 - 括號(hào)毫無意義 if (I = 42) or (J = 42) then / 正確 - 的確需要括號(hào)程序編寫規(guī)范 exit() exit 除了在 main

12、 中可以被調(diào)用外,其他的地方不應(yīng)該調(diào)用。因?yàn)檫@樣做不給任何代碼代碼機(jī)會(huì)來截獲退出。一個(gè)類似后臺(tái)服務(wù)地程序不應(yīng)該因?yàn)槟骋粋€(gè)庫模塊決定了要退出就退出。強(qiáng)烈不建議使用。要特別小心在你的j2ee代碼中出現(xiàn)這個(gè),因?yàn)檫@個(gè)可以使應(yīng)用服務(wù)器或者web服務(wù)器強(qiáng)行退出(一個(gè)工具的地方,不過對(duì)resin無效 :)。 異常 應(yīng)該對(duì)異常進(jìn)行封裝,定義自己的業(yè)務(wù)相關(guān)的異常,在統(tǒng)一的入口進(jìn)行異常處理,比如日志處理等。對(duì)RuntimeException異常可以不進(jìn)行捕獲。一般在設(shè)計(jì)時(shí)關(guān)系到不可修復(fù)的錯(cuò)誤時(shí)應(yīng)拋出RuntimeException異常。 Java異常處理的爭(zhēng)論見如下文章:/d

13、evelop/article/64/article/63/63532.shtm 垃圾收集 (注意類外引用的問題) JAVA使用成熟的后臺(tái)垃圾收集技術(shù)來代替引用計(jì)數(shù)。但是這樣會(huì)導(dǎo)致一個(gè)問題:你必須在使用完對(duì)象的實(shí)例以后進(jìn)行清場(chǎng)工作。比如一個(gè)prel的程序員可能這么寫:. FileOutputStream fos = new FileOutputStream(projectFile); project.save(fos, IDE Project File); 除非輸出流一出作用域就關(guān)閉,非引用計(jì)數(shù)的程序語言,比如JAVA,是不能自動(dòng)完成變量的清場(chǎng)工作的。必須象下面一樣寫: FileOutputSt

14、ream fos = new FileOutputStream(projectFile); project.save(fos, IDE Project File); Clone 下面是一種有用的方法: implements Cloneable public Object clone() try ThisClass obj = (ThisClass)super.clone(); obj.field1 = (int)field1.clone(); obj.field2 = field2; return obj; catch(CloneNotSupportedException e) throw n

15、ew InternalError(Unexpected CloneNotSUpportedException: + e.getMessage(); final 類 絕對(duì)不要因?yàn)樾阅艿脑驅(qū)㈩惗x為 final 的(除非程序的框架要求) 如果一個(gè)類還沒有準(zhǔn)備好被繼承,最好在類文檔中注明,而不要將她定義為 final 的。這是因?yàn)闆]有人可以保證會(huì)不會(huì)由于什么原因需要繼承她。一把工具類或者時(shí)常量類都必須定義成final,除非特殊的需要,比如運(yùn)行時(shí)動(dòng)態(tài)改變。 訪問類的成員變量 大部分的類成員變量應(yīng)該定義為 protected 的來防止繼承類使用他們。 注意,要用int packets,而不是int p

16、ackets,后一種永遠(yuǎn)也不要用。 public void setPackets(int packets) this.packets = packets; CounterSet(int size) this.size = size; byte 數(shù)組轉(zhuǎn)換到 characters 為了將 characters轉(zhuǎn)換到byte 數(shù)組,你可以這么做: Hello world!.getBytes(); Utility與helper 類 Utility 與helper類(僅僅提供static方法的類)應(yīng)該被申明為抽象或者final的來防止被繼承或被初始化。 初始化 下面的代碼是一種很好的初始化數(shù)組的方法:

17、objectArguments = new Object arguments ; 枚舉類型 JAVA 對(duì)枚舉的支持不好,但是下面的代碼是一種很有用的模板(可以用apache的擴(kuò)展lang庫): class Colour public static final Colour BLACK = new Colour(0, 0, 0); public static final Colour RED = new Colour(0xFF, 0, 0); public static final Colour GREEN = new Colour(0, 0xFF, 0); public static fina

18、l Colour BLUE = new Colour(0, 0, 0xFF); public static final Colour WHITE = new Colour(0xFF, 0xFF, 0xFF); public Colour(int I,int j,int k); 這種技術(shù)實(shí)現(xiàn)了RED, GREEN, BLUE 等可以象其他語言的枚舉類型一樣使用的常量。 他們可以用 = 操作符來比較。 但是這樣使用有一個(gè)缺陷:如果一個(gè)用戶用這樣的方法來創(chuàng)建顏色 BLACK new Colour(0,0,0) 那么這就是另外一個(gè)對(duì)象,=操作符就會(huì)產(chǎn)生錯(cuò)誤。她的 equal() 方法仍然有效。由于這個(gè)

19、原因,這個(gè)技術(shù)的缺陷最好注明在文檔中,或者只在自己的包中使用。 注釋代碼行的%比必須達(dá)到30%以上。未達(dá)到該數(shù)的退回去重審。注釋: 注釋要盡可能的完善,盡量做到規(guī)范統(tǒng)一。Modified是public,protected的必須用javadoc注釋,package、private的用多行(/* */)或者單行(/)注釋。變量聲明注釋統(tǒng)一放在上面。 在寫代碼的時(shí)候,從頭至尾都應(yīng)該考慮性能問題。這不是說時(shí)間都應(yīng)該浪費(fèi)在優(yōu)化代碼上,而是我們時(shí)刻應(yīng)該提醒自己要注意代碼的效率。比如:如果沒有時(shí)間來實(shí)現(xiàn)一個(gè)高效的算法,那么我們應(yīng)該在文檔中記錄下來,以便在以后有空的時(shí)候再來實(shí)現(xiàn)她。 不是所有的人都同意在寫代碼的時(shí)候應(yīng)該優(yōu)化性能這個(gè)觀點(diǎn)的,他們認(rèn)為性能優(yōu)化的問題應(yīng)該在項(xiàng)目的后期再去考慮,也就是在程序的輪廓已經(jīng)實(shí)現(xiàn)了以后。 不必要的對(duì)象構(gòu)造 不要在循環(huán)中構(gòu)造和釋放對(duì)象 使用 StringBuffer 對(duì)象 在處理 String 的時(shí)候要盡量使用 StringBuffer 類,StringBuffer 類是構(gòu)成 String 類的基礎(chǔ)。String 類將 StringBuffer 類封裝了起來,(以花費(fèi)更多時(shí)間為代價(jià))為開發(fā)人員提供了一個(gè)安全的接口。當(dāng)我們?cè)跇?gòu)造字符串的時(shí)候,我們應(yīng)該用 StringBuffer 來實(shí)現(xiàn)

溫馨提示

  • 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)論