版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024高考政治一輪復(fù)習(xí)第一部分經(jīng)濟(jì)生活第四單元發(fā)展社會(huì)主義市抄濟(jì)第十一課經(jīng)濟(jì)全球化與對(duì)外開放課時(shí)作業(yè)含解析
- 2024生鮮乳電商平臺(tái)數(shù)據(jù)合作與銷售合同3篇
- 2024高考數(shù)學(xué)一輪復(fù)習(xí)統(tǒng)考第10章統(tǒng)計(jì)統(tǒng)計(jì)案例第2講用樣本估計(jì)總體課時(shí)作業(yè)含解析北師大版
- 二零二五年度美團(tuán)騎手配送合同樣本3篇
- 結(jié)婚答謝宴父母致辭講話
- 江西水利職業(yè)學(xué)院《數(shù)據(jù)庫應(yīng)用》2023-2024學(xué)年第一學(xué)期期末試卷
- 小學(xué)生運(yùn)動(dòng)安全保障措施的探討與實(shí)踐
- 誠實(shí)守信好少年事跡材料范文300字(7篇)
- 2024年華師大新版選擇性必修1化學(xué)上冊(cè)月考試卷
- 學(xué)生學(xué)習(xí)態(tài)度與習(xí)慣養(yǎng)成的互動(dòng)關(guān)系
- 2025年道路運(yùn)輸企業(yè)客運(yùn)駕駛員安全教育培訓(xùn)計(jì)劃
- 2024年市特殊教育學(xué)校工作總結(jié)范文(2篇)
- LNG采購框架合同范例
- 2024版機(jī)床維護(hù)保養(yǎng)服務(wù)合同3篇
- 課題1 金屬材料 教學(xué)設(shè)計(jì) 九年級(jí)化學(xué)下冊(cè)人教版2024
- 能源崗位招聘筆試題與參考答案(某大型國企)
- 《論拒不執(zhí)行判決、裁定罪“執(zhí)行能力”之認(rèn)定》
- 工業(yè)設(shè)計(jì)基礎(chǔ)知識(shí)單選題100道及答案解析
- 2024年貴州省公務(wù)員錄用考試《行測(cè)》真題及答案解析
- 山西省晉中市2023-2024學(xué)年高一上學(xué)期期末考試 化學(xué) 含解析
- 2024國家安全員資格考試題庫加解析答案
評(píng)論
0/150
提交評(píng)論