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

下載本文檔

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

文檔簡介

軟件開發(fā)代碼規(guī)范 (C)(僅通普信息技術(shù)股份有限公司供內(nèi)部使用)擬制:楊超日期:-3-10審核:夏峰日期:-3-10核準(zhǔn):馮敬剛?cè)掌冢?3-17簽發(fā):韓殿成日期:-3-21文檔版本:V1.11黑龍江通普信息技術(shù)股份有限公司版本歷史日期版本闡明作者目錄TOC\o"1-3"\h\z第一章代碼開發(fā)規(guī)范及其指南 11.1目 11.2程序內(nèi)命名規(guī)范 11.3文獻(xiàn)命名規(guī)范 21.4Java文獻(xiàn)樣式 21.5代碼編寫格式 6第二章程序編寫規(guī)范辦法 82.1權(quán)限修飾 82.2其她規(guī)范 82.3編程指南 10第三章其她規(guī)定 12代碼開發(fā)規(guī)范及其指南目定義這個(gè)規(guī)范目是讓項(xiàng)目中所有文檔都看起來像一種人寫,增長可讀性,減少項(xiàng)目組中由于換人而帶來損失。(這些規(guī)范并不是一定要絕對(duì)遵守,但是一定要讓程序有良好可讀性)程序內(nèi)命名規(guī)范Package命名:Package名字應(yīng)當(dāng)都是由一種小寫單詞構(gòu)成。Class命名:Class名字必要由大寫字母開頭而其她字母都小寫單詞構(gòu)成Class變量命名:變量名字必要用一種小寫字母開頭。背面單詞用大寫字母開頭。StaticFinal變量命名:StaticFinal變量名字應(yīng)當(dāng)都大寫,并且指出完整含義。參數(shù)命名:參數(shù)名字必要和變量命名規(guī)范一致。數(shù)組命名:數(shù)組應(yīng)當(dāng)總是用下面方式來命名:byte[]buffer;而不是bytebuffer[];辦法參數(shù):使用故意義參數(shù)命名,如果也許話,使用和要賦值字段同樣名字:SetCounter(intsize){this.size=size;}文獻(xiàn)命名規(guī)范文獻(xiàn)名由英文單詞構(gòu)成,每個(gè)單詞首字母大寫,不要超過4個(gè)單詞,如ShipOrder.jsp。Java文獻(xiàn)文獻(xiàn)名要與程序中public類名相似。Servet文獻(xiàn)要以Servlet做為結(jié)尾,如AddCompanyServlet.java業(yè)務(wù)解決組件JavaBean要以Bean為結(jié)尾,如ProcessBean.javaJava文獻(xiàn)樣式所有Java(*.java)文獻(xiàn)都必要遵守如下樣式規(guī)則頭部版權(quán)信息版權(quán)信息必要在java文獻(xiàn)開頭,例如:/***CopyrightSunMicrosystems,Inc.Allrightsreserved.*/其她不需要出當(dāng)前javadoc信息也可以包括在這里。Package/Importspackage行要在import行之前,import中原則包名要在本地包名之前,并且按照字母順序排列。如果import行中包括了同一種包中不同子目錄,則應(yīng)當(dāng)用*來解決。package.stats;importjava.io.*;importjava.util.Observable;importhotlava.util.Application;這里java.io.*使用來代替InputStreamandOutputStream。Class接下來是類注釋,普通是用來解釋類有關(guān)信息,涉及標(biāo)題、描述、。/***<p>Title:Example</p>*<p>Description:AuditApplicationExample</p>*<p>Copyright:Copyright(c)200x</p>*<p>Company:xxxxx</p>*@authorxxxxxx*@version1.0*/接下來是類定義,包括了在不同行extends和implementspublicclassCounterSetextendsObservableimplementsCloneableClassFields接下來是類成員變量:/***Packetcounters*/protectedint[]packets;public成員變量必要生成文檔(JavaDoc)。protected、private和package定義成員變量如果名字含義明確話,可以沒有注釋。存取辦法接下來是類變量存取辦法。它只是簡樸用來將類變量賦值獲取值話,可以簡樸寫在一行上。/***Getthecounters*@returnanarraycontainingthestatisticaldata.Thisarrayhasbeen*freshlyallocatedandcanbemodifiedbythecaller.*/publicint[]getPackets(){returncopyArray(packets,offset);}publicint[]getBytes(){returncopyArray(bytes,offset);}publicint[]getPackets(){returnpackets;}publicvoidsetPackets(int[]packets){this.packets=packets;}其他辦法不要寫在一行上構(gòu)造函數(shù)接下來是構(gòu)造函數(shù),它應(yīng)當(dāng)用遞增方式寫(例如:參數(shù)多寫在背面)。訪問類型("public","private"等.)和任何"static","final"或"synchronized"應(yīng)當(dāng)在一行中。PublicCounterSet(intsize){this.size=size;}克隆辦法如果這個(gè)類是可以被克隆,那么下一步就是clone辦法:publicObjectclone(){try{CounterSetobj=(CounterSet)super.clone();obj.packets=(int[])packets.clone();obj.size=size;returnobj;}catch(CloneNotSupportedExceptione){thrownewInternalError("UnexpectedCloneNotSUpportedException:"+e.getMessage());}}類辦法下面開始寫類辦法:/***Setthepacketcounters*(suchaswhenrestoringfromadatabase)*/protectedfinalvoidsetArray(int[]r1,int[]r2,int[]r3,int[]r4)throwsIllegalArgumentException{////Ensurethearraysareofequalsize//if(r1.length!=r2.length||r1.length!=r3.length||r1.length!=r4.length)thrownewIllegalArgumentException("Arraysmustbeofthesamesize");System.arraycopy(r1,0,r3,0,r1.length);System.arraycopy(r2,0,r4,0,r1.length);}toString辦法無論如何,每一種類都應(yīng)當(dāng)定義toString辦法:publicStringtoString(){Stringretval="CounterSet:";for(inti=0;i<data.length();i++){retval+=data.bytes.toString();retval+=data.packets.toString();}returnretval;}}main辦法如果main(String[])辦法已經(jīng)定義了,那么它應(yīng)當(dāng)寫在類底部.代碼編寫格式代碼樣式代碼應(yīng)當(dāng)用unix格式,而不是windows(例如:回車變成回車+換行)文檔化必要用javadoc來為類生成文檔。不但由于它是原則,這也是被各種java編譯器都承認(rèn)辦法。縮進(jìn)縮進(jìn)應(yīng)當(dāng)是每行4個(gè)空格.不要在源文獻(xiàn)中保存Tab字符.在使用不同源代碼管理工具時(shí)Tab字符將由于顧客設(shè)立不同而擴(kuò)展為不同寬度.如果你使用UltraEdit作為Java源代碼編輯器話,你可以通過如下操作來禁止保存Tab字符,辦法是通過UltrEdit中先設(shè)定Tab使用長度是4個(gè)空格,然后用Format|TabstoSpaces菜單將Tab轉(zhuǎn)換為空格。頁寬頁寬應(yīng)當(dāng)設(shè)立為80字符.源代碼普通不會(huì)超過這個(gè)寬度,并導(dǎo)致無法完整顯示,但這一設(shè)立也可以靈活調(diào)節(jié).在任何狀況下,超長語句應(yīng)當(dāng)在一種逗號(hào)或者一種操作符后折行.一條語句折行后,應(yīng)當(dāng)比本來語句再縮進(jìn)2個(gè)字符.程序塊要有大括號(hào),雖然只有一句程序{}中語句應(yīng)當(dāng)單獨(dú)作為一行.例如,下面第1行是錯(cuò)誤,第2行是對(duì)的:if(i>0){i++};//錯(cuò)誤,{和}在同一行if(i>0){i++};//對(duì)的,{單獨(dú)作為一行}語句永遠(yuǎn)單獨(dú)作為一行.如果}語句應(yīng)當(dāng)縮進(jìn)到與其相相應(yīng){那一行相對(duì)齊位置。括號(hào)左括號(hào)和后一種字符之間不應(yīng)當(dāng)浮現(xiàn)空格,同樣,右括號(hào)和前一種字符之間也不應(yīng)當(dāng)浮現(xiàn)空格.下面例子闡明括號(hào)和空格錯(cuò)誤及對(duì)的使用:CallProc(AParameter);//錯(cuò)誤CallProc(AParameter);//對(duì)的不要在語句中使用無意義括號(hào).括號(hào)只應(yīng)當(dāng)為達(dá)到某種目而出當(dāng)前源代碼中。下面例子闡明錯(cuò)誤和對(duì)的用法:if((I)=42){//錯(cuò)誤-括號(hào)毫無意義if(I==42)or(J==42)then//對(duì)的-確需要括號(hào)import對(duì)于import語句,如果某一種包中引用類不超過三個(gè)(涉及三個(gè)),不容許用importxxx.*;格式。變量定義及辦法返回值不容許使用全包名,如java.lang.String,除非在不同包中有相似名字類,必要用全名來區(qū)別。對(duì)于類中屬性存取要用辦法(getXXX/setXXX,boolean值用isXXX/setXXX),不要直接引用。

程序編寫規(guī)范辦法權(quán)限修飾Java中權(quán)限修飾符有三個(gè):public,private,protected,此外一種是不寫這三種任何一種,稱為(default).對(duì)于外部類,只能用public或(default),并且一種文獻(xiàn)中最多只能有一種public類。但是內(nèi)部類這四種都可以使用。如果對(duì)某些數(shù)據(jù)或辦法只容許其所在類使用,用private修飾。如果對(duì)某些數(shù)據(jù)或辦法容許本類或同包類使用,用(default),即不寫任何修飾符。如果對(duì)某些數(shù)據(jù)或辦法容許本類,同包類,或非同包子類使用,用protected.如果對(duì)某些數(shù)據(jù)或辦法容許任何類使用,用public修飾。其她規(guī)范exit()exit除了在main中可以被調(diào)用外,其她地方不應(yīng)當(dāng)調(diào)用。由于這樣做不給任何代碼代碼機(jī)會(huì)來截獲退出。一種類似后臺(tái)服務(wù)程序不應(yīng)當(dāng)由于某一種庫模塊決定了要退出就退出。異常核心操作如涉及到數(shù)據(jù)庫操作和各種核心解決環(huán)節(jié)時(shí)應(yīng)當(dāng)采用try,catch語句,以便于捕獲異常(各類Exception)和異常解決。垃圾收集JAVA使用成熟后臺(tái)垃圾收集技術(shù)來代替引用計(jì)數(shù)。但是這樣會(huì)導(dǎo)致一種問題:必要在使用完對(duì)象實(shí)例后來進(jìn)行清場(chǎng)工作。除非輸出流一出作用域就關(guān)閉,非引用計(jì)數(shù)程序語言,例如JAVA,是不能自動(dòng)完畢變量清場(chǎng)工作。必要象下面同樣寫:FileOutputStreamfos=newFileOutputStream(projectFile);project.save(fos,"IDEProjectFile");fos.close();Clone下面是一種有用辦法:implementsCloneablepublicObjectclone(){try{ThisClassobj=(ThisClass)super.clone();obj.field1=(int[])field1.clone();obj.field2=field2;returnobj;}catch(CloneNotSupportedExceptione){thrownewInternalError("UnexpectedCloneNotSUpportedException:"+e.getMessage());}}final類絕對(duì)不要由于性能因素將類定義為final(除非程序框架規(guī)定)如果一種類還沒有準(zhǔn)備好被繼承,最佳在類文檔中注明,而不要將她定義為final。這是由于沒有人可以保證會(huì)不會(huì)由于什么因素需要繼承她。訪問類成員變量大某些類成員變量應(yīng)當(dāng)定義為protected來防止繼承類使用她們。注意,要用"int[]packets",而不是"intpackets[]",后一種永遠(yuǎn)也不要用。publicvoidsetPackets(int[]packets){this.packets=packets;}CounterSet(intsize){this.size=size;}編程指南byte數(shù)組轉(zhuǎn)換到characters為了將byte數(shù)組轉(zhuǎn)換到characters,可以這樣做:"Helloworld!".getBytes();Utility類Utility類(僅僅提供辦法類)應(yīng)當(dāng)被聲明為抽象來防止被繼承或被初始化。初始化下面代碼是一種較好初始化數(shù)組辦法:objectArguments=newObject[]{arguments};枚舉類型JAVA對(duì)枚舉支持不好,但是下面代碼是一種很有用模板:classColour{publicstaticfinalColourBLACK=newColour(0,0,0);publicstaticfinalColourRED=newColour(0xFF,0,0);publicstaticfinalColourGREEN=newColour(0,0xFF,0);publicstaticfinalColourBLUE=newColour(0,0,0xFF);publicstaticfinalColourWHITE=newColour(0xFF,0xFF,0xFF);}這種技術(shù)實(shí)現(xiàn)了RED,GREEN,BLUE等可以象其她語言枚舉類型同樣使用常量。她們可以用'=='操作符來比較。但是這樣使用有一種缺陷:如果一種顧客用這樣辦法來創(chuàng)立顏色BLACKnewColour(0,0,0)那么這就是此外一種對(duì)象,'=='操作符就會(huì)產(chǎn)生錯(cuò)誤。她equal()辦法依然有效。由于這個(gè)因素,這個(gè)技術(shù)缺陷最佳注明在文檔中,或者只在自己包中使用。性能在寫代碼時(shí)候,從頭至尾都應(yīng)當(dāng)考慮性能問題,要注意代碼效率。不必要對(duì)象構(gòu)造不要在循環(huán)中構(gòu)造和釋放對(duì)象使用StringBuffer對(duì)象在解決String時(shí)候要盡量使用StringBuffer類,

溫馨提示

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