軟件開發代碼規范(Java)_第1頁
軟件開發代碼規范(Java)_第2頁
軟件開發代碼規范(Java)_第3頁
軟件開發代碼規范(Java)_第4頁
軟件開發代碼規范(Java)_第5頁
已閱讀5頁,還剩10頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

Java開發編碼規范第1頁軟件開發代碼規范 (C)(僅通普信息技術股份有限公司供內部使用)擬制:楊超日期:2015-3-10審核:夏峰日期:2015-3-10核準:馮敬剛日期:2015-3-17簽發:韓殿成日期:2015-3-21文檔版本:V1.11黑龍江通普信息技術股份有限公司版本歷史日期版本說明作者文件命名規范文件名由英文單詞組成,每個單詞的首字母大寫,不要超過4個單詞,如ShipOrder.jsp。Java文件的文件名要與程序中的public類名相同。Servet文件要以Servlet做為結尾,如AddCompanyServlet.java業務處理組件JavaBean要以Bean為結尾,如ProcessBean.javaJava文件樣式所有的Java(*.java)文件都必須遵守如下的樣式規則頭部版權信息版權信息必須在java文件的開頭,比如:/***Copyright2002SunMicrosystems,Inc.Allrightsreserved.*/其他不需要出現在javadoc的信息也可以包含在這里。Package/Importspackage行要在import行之前,import中標準的包名要在本地的包名之前,而且按照字母順序排列。如果import行中包含了同一個包中的不同子目錄,則應該用*來處理。package.stats;importjava.io.*;importjava.util.Observable;importhotlava.util.Application;這里java.io.*使用來代替InputStreamandOutputStream的。Class接下來的是類的注釋,一般是用來解釋類的相關信息,包括標題、描述、。/***<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;}其它的方法不要寫在一行上構造函數接下來是構造函數,它應該用遞增的方式寫(比如:參數多的寫在后面)。訪問類型("public","private"等.)和任何"static","final"或"synchronized"應該在一行中。PublicCounterSet(intsize){this.size=size;}克隆方法如果這個類是可以被克隆的,那么下一步就是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方法無論如何,每一個類都應該定義toString方法:publicStringtoString(){Stringretval="CounterSet:";for(inti=0;i<data.length();i++){retval+=data.bytes.toString();retval+=data.packets.toString();}returnretval;}}main方法如果main(String[])方法已經定義了,那么它應該寫在類的底部.代碼編寫格式代碼樣式代碼應該用unix的格式,而不是windows的(比如:回車變成回車+換行)文檔化必須用javadoc來為類生成文檔。不僅因為它是標準,這也是被各種java編譯器都認可的方法。縮進縮進應該是每行4個空格.不要在源文件中保存Tab字符.在使用不同的源代碼管理工具時Tab字符將因為用戶設置的不同而擴展為不同的寬度.如果你使用UltraEdit作為Java源代碼編輯器的話,你可以通過如下操作來禁止保存Tab字符,方法是通過UltrEdit中先設定Tab使用的長度是4個空格,然后用Format|TabstoSpaces菜單將Tab轉換為空格。頁寬頁寬應該設置為80字符.源代碼一般不會超過這個寬度,并導致無法完整顯示,但這一設置也可以靈活調整.在任何情況下,超長的語句應該在一個逗號或者一個操作符后折行.一條語句折行后,應該比原來的語句再縮進2個字符.程序塊要有大括號,即使只有一句程序{}中的語句應該單獨作為一行.例如,下面的第1行是錯誤的,第2行是正確的:if(i>0){i++};//錯誤,{和}在同一行if(i>0){i++};//正確,{單獨作為一行}語句永遠單獨作為一行.如果}語句應該縮進到與其相對應的{那一行相對齊的位置。括號左括號和后一個字符之間不應該出現空格,同樣,右括號和前一個字符之間也不應該出現空格.下面的例子說明括號和空格的錯誤及正確使用:CallProc(AParameter);//錯誤CallProc(AParameter);//正確不要在語句中使用無意義的括號.括號只應該為達到某種目的而出現在源代碼中。下面的例子說明錯誤和正確的用法:if((I)=42){//錯誤-括號毫無意義if(I==42)or(J==42)then//正確-的確需要括號import對于import語句,如果某一個包中引用的類不超過三個(包括三個),不允許用importxxx.*;格式。變量定義及方法的返回值不允許使用全包名,如java.lang.String,除非在不同的包中有相同名字的類,必須用全名來區分。對于類中屬性的存取要用方法(getXXX/setXXX,boolean值用isXXX/setXXX),不要直接引用。

程序編寫規范方法權限修飾Java中權限修飾符有三個:public,private,protected,另外一種是不寫這三種的任何一個,稱為(default).對于外部類,只能用public或(default),而且一個文件中最多只能有一個public類。但是內部類這四種都可以使用。如果對某些數據或方法只允許其所在類使用,用private修飾。如果對某些數據或方法允許本類或同包類使用,用(default),即不寫任何修飾符。如果對某些數據或方法允許本類,同包類,或非同包子類使用,用protected.如果對某些數據或方法允許任何類使用,用public修飾。其他規范exit()exit除了在main中可以被調用外,其他的地方不應該調用。因為這樣做不給任何代碼代碼機會來截獲退出。一個類似后臺服務的程序不應該因為某一個庫模塊決定了要退出就退出。異常關鍵操作如涉及到數據庫操作和多個關鍵處理步驟時應當采用try,catch語句,以便于捕獲異常(各類Exception)和異常處理。垃圾收集JAVA使用成熟的后臺垃圾收集技術來代替引用計數。但是這樣會導致一個問題:必須在使用完對象的實例以后進行清場工作。除非輸出流一出作用域就關閉,非引用計數的程序語言,比如JAVA,是不能自動完成變量的清場工作的。必須象下面一樣寫: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類絕對不要因為性能的原因將類定義為final的(除非程序的框架要求)如果一個類還沒有準備好被繼承,最好在類文檔中注明,而不要將她定義為final的。這是因為沒有人可以保證會不會由于什么原因需要繼承她。訪問類的成員變量大部分的類成員變量應該定義為protected的來防止繼承類使用他們。注意,要用"int[]packets",而不是"intpackets[]",后一種永遠也不要用。publicvoidsetPackets(int[]packets){this.packets=packets;}CounterSet(intsize){this.size=size;}編程指南byte數組轉換到characters為了將byte數組轉換到characters,可以這么做:"Helloworld!".getBytes();Utility類Utility類(僅僅提供方法的類)應該被申明為抽象的來防止被繼承或被初始化。初始化下面的代碼是一種很好的初始化數組的方法:objectArguments=newObject[]{arguments};枚舉類型JAVA對枚舉的支持不好,但是下面的代碼是一種很有用的模板: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);}這種技術實現了RED,GREEN,BLUE等可以象其他語言的枚舉類型一樣使用的常量。他們可以用'=='操作符來比較。但是這樣使用有一個缺陷:如果一個用戶用這樣的方法來創建顏色BLACKnewColour(0,0,0)那么這就是另外一個對象,'=='操作符就會產生錯誤。她的equal()方法仍然有效。由于這個原因,這個技術的缺陷最好注明在文檔中,或者只在自己的包中使用。性能在寫代碼的時候,從頭至尾都應該考慮性能問題,要注意代碼的效率。不必要的對象構造不要在循環中構造和釋放對象使用StringBuffer對象在處理String的時候要盡量使用StringBuffer類,StringBuffer類是構成String類的基礎。String類將StringBuffer類封裝了起來,

溫馨提示

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

評論

0/150

提交評論