軟件開(kāi)發(fā)代碼規(guī)范_第1頁(yè)
軟件開(kāi)發(fā)代碼規(guī)范_第2頁(yè)
軟件開(kāi)發(fā)代碼規(guī)范_第3頁(yè)
軟件開(kāi)發(fā)代碼規(guī)范_第4頁(yè)
軟件開(kāi)發(fā)代碼規(guī)范_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、軟件開(kāi)發(fā)代碼規(guī)范(C)(僅通普信息技術(shù)股份有限公司供內(nèi)部使用)擬制:楊超日期:2015-3-10審核:夏峰日期:2015-3-10核準(zhǔn):馮敬剛?cè)掌冢?015-3-17簽發(fā):韓殿成日期:2015-3-21文檔版本:V1.11黑龍江通普信息技術(shù)股份有限公司版本歷史日期版本說(shuō)明作者12269911目錄第一章代碼開(kāi)發(fā)規(guī)范及其指南 11.1目的1.2 程序內(nèi)命名規(guī)范 1.3文件命名規(guī)范1.4 JAVA文件樣式 1.5代碼編寫(xiě)格式第二章程序編寫(xiě)規(guī)范方法 92.1權(quán)限修飾2.2其他規(guī)范2.3編程指南第三章其他要求13第一章代碼開(kāi)發(fā)規(guī)范及其指南1.1目的定義這個(gè)規(guī)范的目的是讓項(xiàng)目中所有的文檔都看起來(lái)像一個(gè)人寫(xiě)

2、的,增 加可讀性,減少項(xiàng)目組中因?yàn)閾Q人而帶來(lái)的損失。(這些規(guī)范并不是一定要絕 對(duì)遵守,但是一定要讓程序有良好的可讀性)1.2程序內(nèi)命名規(guī)范Package的命名:Package的名字應(yīng)該都是由一個(gè)小寫(xiě)單詞組成。Class的命名:Class的名字必須由大寫(xiě)字母開(kāi)頭而其他字母都小寫(xiě)的單 詞組成Class變量的命名:變量的名字必須用一個(gè)小寫(xiě)字母開(kāi)頭。后面的單詞用 大寫(xiě)字母開(kāi)頭。Static Final 變量的命名:Static Final變量的名字應(yīng)該都大寫(xiě),并且指出完整含義。參數(shù)的命名:參數(shù)的名字必須和變量的命名規(guī)范一致。數(shù)組的命名:數(shù)組應(yīng)該總是用下面的方式來(lái)命名:byte buffer; 而不是

3、byte buffer;方法的參數(shù):使用有意義的參數(shù)命名,如果可能的話,使用和要賦值的字 段一樣的名字:SetCo un ter(i nt size)this.size = size;1.3文件命名規(guī)范文件名由英文單詞組成,每個(gè)單詞的首字母大寫(xiě),不要超過(guò)4個(gè)單詞,如 ShipOrder.jsp 。Java文件的文件名要與程序中的public類(lèi)名相同。Servet 文件要以 Servlet 做為結(jié)尾,如 AddCompanyServlet.java 業(yè)務(wù)處理組件Java Bean要以Bean為結(jié)尾,如 ProcessBean.java1.4 Java文件樣式所有的Java(*java)文件都必須

4、遵守如下的樣式規(guī)則頭部版權(quán)信息版權(quán)信息必須在java文件的開(kāi)頭,比如:/* Copyright 2002 Sun Microsystems, Inc. All rights reserved.*/其他不需要出現(xiàn)在javadoc的信息也可以包含在這里Package/lmportspackage行要在import 行之前,import中標(biāo)準(zhǔn)的包名要在本地的包名之 前,而且按照字母順序排列。如果 import行中包含了同一個(gè)包中的不同子目 錄,則應(yīng)該用*來(lái)處理。package hotlava .n et.stats;import java.io.*;import java.util.Observab

5、le;import hotlava.util.Applicati on;這里 java.io.* 使用來(lái)代替 InputStream and Outputstream 的。Class接下來(lái)的是類(lèi)的注釋?zhuān)话闶怯脕?lái)解釋類(lèi)的相關(guān)信息,包括標(biāo)題、描述、* Title: Example* Descripti on: AuditApplicati on Example* Copyright: Copyright (c) 200x* Compa ny: xxxxx* author xxxxxx* versio n 1.0*/接下來(lái)是類(lèi)定義,包含了在不同的行的exte nds 和impleme ntspub

6、lic class Coun terSet exte nds Observable impleme nts Cion eableClass Fields接下來(lái)是類(lèi)的成員變量:* Packet coun ters*/protected in t packets;public 的成員變量必須生成文檔(JavaDoc)。protected、private 和package定義的成員變量如果名字含義明確的話,可以沒(méi)有注釋。存取方法接下來(lái)是類(lèi)變量的存取的方法。它只是簡(jiǎn)單的用來(lái)將類(lèi)的變量賦值獲取值的話,可以簡(jiǎn)單的寫(xiě)在一行上* Get the coun ters* return an array conta

7、ining the statistical data. This array has bee n* freshly allocated and can be modified by the caller.*/public int getPackets() return copyArray(packets, offset); public in t getBytes() return copyArray(bytes, offset); public in t getPackets() retur n packets; public void setPackets(i nt packets) th

8、is.packets = packets; 其它的方法不要寫(xiě)在一行上構(gòu)造函數(shù)接下來(lái)是構(gòu)造函數(shù),它應(yīng)該用遞增的方式寫(xiě)(比如:參數(shù)多的寫(xiě)在后面)。 訪問(wèn)類(lèi)型(public, private等.) 和 任何static, final或synchroni zed應(yīng)該在一行中。Public Cou nterSet (int size)this.size = size;克隆方法如果這個(gè)類(lèi)是可以被克隆的,那么下一步就是clone方法:public Object cion e() try Coun terSet obj = (Co un terSet)super.clo ne();obj.packets =

9、(in t)packets.clo ne();obj.size = size;return obj;catch(CI on eNotSupportedExcepti on e) throw new InternalError(UnexpectedCioneNotSUpportedException:+ e.getMessage();類(lèi)方法F面開(kāi)始寫(xiě)類(lèi)的方法:/* Set the packet coun ters* (such as whe n restori ng from a database)*/protected finalvoid setArray(int r1, int r2, in

10、t r3, int r4)throws IliegalArgume ntExceptio n/ En sure the arrays are of equal size/if (rl.le ngth !=r2.le ngth| rl.le ngth !=r3.le ngth|must be of the samerl.length != r4.length)throw new IllegalArgumentException(Arrayssize);System.arraycopy(r1,0, r3, 0, r1 .len gth);System.arraycopy(r2, 0, r4, 0,

11、 r1 .len gth);toStri ng方法無(wú)論如何,每一個(gè)類(lèi)都應(yīng)該定義toStri ng 方法:publicString toString() Stri ng retval = Cou nterSet:;for (i nt i = 0; i 0) i + ; /錯(cuò)誤, 和在同一行if (i0) i +; / 正確,單獨(dú)作為一行語(yǔ)句永遠(yuǎn)單獨(dú)作為一行如果語(yǔ)句應(yīng)該縮進(jìn)到與其相對(duì)應(yīng)的那一行相對(duì)齊的位置括號(hào)左括號(hào)和后一個(gè)字符之間不應(yīng)該出現(xiàn)空格,同樣,右括號(hào)和前一個(gè)字符之 間也不應(yīng)該出現(xiàn)空格.下面的例子說(shuō)明括號(hào)和空格的錯(cuò)誤及正確使用:CallProc( AParameter ); / 錯(cuò)誤Call

12、Proc(AParameter); / 正確不要在語(yǔ)句中使用無(wú)意義的括號(hào).括號(hào)只應(yīng)該為達(dá)到某種目的而出現(xiàn)在源代碼 中。下面的例子說(shuō)明錯(cuò)誤和正確的用法:if (I) = 42) /錯(cuò)誤-括號(hào)毫無(wú)意義if (I = 42) or (J = 42) then /正確-的確需要括號(hào)import對(duì)于import語(yǔ)句,如果某一個(gè)包中引用的類(lèi)不超過(guò)三個(gè)(包括三個(gè)),不允許用import xxx.*; 格式。變量定義及方法的返回值不允許使用全包名,如java.la ng.Stri ng,除非在不同的包中有相同名字的類(lèi),必須用全名來(lái)區(qū)分。對(duì)于類(lèi)中屬性的存取要用方法(getXXX/setXXX,boolean 值

13、用 isXXX/setXXX),不要直接引用。第二章程序編寫(xiě)規(guī)范方法2.1權(quán)限修飾Java 中權(quán)限修飾符有三個(gè):public,private,protected,另外一種是不寫(xiě)這三種的任何一個(gè),稱(chēng)為(default).1) 對(duì)于外部類(lèi),只能用 public或(default),而且一個(gè)文件中最多只能有 一個(gè)public類(lèi)。但是內(nèi)部類(lèi)這四種都可以使用。2)如果對(duì)某些數(shù)據(jù)或方法只允許其所在類(lèi)使用,用 private修飾。3)如果對(duì)某些數(shù)據(jù)或方法允許本類(lèi)或同包類(lèi)使用,用( default),即不寫(xiě) 任何修飾符。4)如果對(duì)某些數(shù)據(jù)或方法允許本類(lèi),同包類(lèi),或非同包子類(lèi)使用,用 protected.如果對(duì)

14、某些數(shù)據(jù)或方法允許任何類(lèi)使用,用public修飾。2.2其他規(guī)范exit()exit除了在main中可以被調(diào)用外,其他的地方不應(yīng)該調(diào)用。因?yàn)檫@樣做 不給任何代碼代碼機(jī)會(huì)來(lái)截獲退出。一個(gè)類(lèi)似后臺(tái)服務(wù)的程序不應(yīng)該因?yàn)槟骋?個(gè)庫(kù)模塊決定了要退出就退出。異常關(guān)鍵操作如涉及到數(shù)據(jù)庫(kù)操作和多個(gè)關(guān)鍵處理步驟時(shí)應(yīng)當(dāng)采用try,catch語(yǔ)句,以便于捕獲異常(各類(lèi) Exception )和異常處理。垃圾收集JAVA使用成熟的后臺(tái)垃圾收集技術(shù)來(lái)代替引用計(jì)數(shù)。但是這樣會(huì)導(dǎo)致一個(gè) 問(wèn)題:必須在使用完對(duì)象的實(shí)例以后進(jìn)行清場(chǎng)工作。除非輸出流一出作用域就關(guān)閉,非引用計(jì)數(shù)的程序語(yǔ)言,比如JAVA是不能自動(dòng)完成變量的清場(chǎng)工作的

15、。必須象下面一樣寫(xiě):FileOutputStream fos = new FileOutputStream(projectFile);project.save(fos, IDE Project File);fos.close();Clo neF面是一種有用的方法:impleme nts Cion eablepublicObject cion e()try ThisClass obj = (ThisClass)super.clo ne();obj.fieldi =(in t)field1.clo ne();obj.field2 =field2;return obj; catch(Cl on eN

16、otSupportedExceptio n e) throw new InternalError(UnexpectedCioneNotSUpportedException:+ e.getMessage();final 類(lèi)絕對(duì)不要因?yàn)樾阅艿脑驅(qū)㈩?lèi)定義為final 的(除非程序的框架要求)如果一個(gè)類(lèi)還沒(méi)有準(zhǔn)備好被繼承,最好在類(lèi)文檔中注明,而不要將她定義為 final的。這是因?yàn)闆](méi)有人可以保證會(huì)不會(huì)由于什么原因需要繼承她。訪問(wèn)類(lèi)的成員變量大部分的類(lèi)成員變量應(yīng)該定義為protected的來(lái)防止繼承類(lèi)使用他們。注意,要用int packets ,而不是int packets,后一種永遠(yuǎn)也不要用。pub

17、lic void setPackets(i nt packets) this.packets = packets; Coun terSet(i nt size)this.size = size;2.3編程指南1、byte 數(shù)組轉(zhuǎn)換到 characters為了將byte 數(shù)組轉(zhuǎn)換到characters ,可以這么做:Hello world!.getBytes();2、Utility 類(lèi)Utility 類(lèi)(僅僅提供方法的類(lèi))應(yīng)該被申明為抽象的來(lái)防止被繼承或被 初始化。3、初始化下面的代碼是一種很好的初始化數(shù)組的方法:objectArgume nts =new Object argume nts ;

18、4、枚舉類(lèi)型JAVA對(duì)枚舉的支持不好,但是下面的代碼是一種很有用的模板:class Colour public static final Colour BLACK = new Colour 0, 0);public static final Colour RED = new Colour(0xFF, 0, 0); public static final Colour GREEN = new Colour(0, 0xFF, 0);public static final Colour BLUE = new Colour(0, 0, 0xFF);public static final Colour

19、WHITE = new Colour(0xFF, OxFF, OxFF); 這種技術(shù)實(shí)現(xiàn)了 RED, GREEN, BLUE等可以象其他語(yǔ)言的枚舉類(lèi)型一樣使 用的常量。 他們可以用=操作符來(lái)比較。 但是這樣使用有一個(gè)缺陷:如 果一個(gè)用戶(hù)用這樣的方法來(lái)創(chuàng)建顏色 BLACKnew Colour(0,0,0)那么這就是另外一個(gè)對(duì)象,=操作符就會(huì)產(chǎn)生錯(cuò)誤。她的equal() 方法 仍然有效。由于這個(gè)原因,這個(gè)技術(shù)的缺陷最好注明在文檔中,或者只在自己 的包中使用。性能1在寫(xiě)代碼的時(shí)候,從頭至尾都應(yīng)該考慮性能問(wèn)題,要注意代碼的效率。2、不必要的對(duì)象構(gòu)造3、不要在循環(huán)中構(gòu)造和釋放對(duì)象4、使用 Stri ngBuffer 對(duì)象在處理String的時(shí)候要盡量使用StringBuffer類(lèi),StringBuffer 類(lèi)是構(gòu)成Stri ng 類(lèi)的基礎(chǔ)。Stri ng 類(lèi)將Stri ngBuffer類(lèi)圭寸裝了起來(lái),(以花費(fèi)更多時(shí)間為代價(jià))為開(kāi)發(fā)人員提供了一個(gè)安全的接口。當(dāng)

溫馨提示

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

評(píng)論

0/150

提交評(píng)論