




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、實用標準文案(。)軟件開發(fā)代碼規(guī)范(僅通普信息技術(shù)股份有限公司供內(nèi)部使用精彩文檔擬制:審核:核準:簽發(fā):文檔版本:日期:日期:日期:日期:2015-3-102015-3-102015-3-172015-3-21黑龍江通普信息技術(shù)股份有限公司版本歷史日期版本說明作者目錄第一章代碼開發(fā)規(guī)范及其指南 11.1 目的 11.2 程序內(nèi)命名規(guī)范 11.3 文件命名規(guī)范 21.4 JAVA文件樣式 21.5 代碼編寫格式 6第二章程序編寫規(guī)范方法 82.1 權(quán)限修飾82.2 其他規(guī)范82.3 編程指南 10第三章其他要求 12第一章代碼開發(fā)規(guī)范及其指南1.1 目的定義這個規(guī)范的目的是讓項目中所有的文檔都看
2、起來像一個人寫的,增 加可讀性,減少項目組中因為換人而帶來的損失。(這些規(guī)范并不是一定要絕 對遵守,但是一定要讓程序有良好的可讀性)1.2 程序內(nèi)命名規(guī)范Package的命名:Package的名字應(yīng)該都是由一個小寫單詞組成。Class的命名:Class的名字必須由大寫字母開頭而其他字母都小寫的單詞 組成Class變量的命名:變量的名字必須用一個小寫字母開頭。后面的單詞用大 寫字母開頭。Static Final變量的命名:Static Final變量的名字應(yīng)該都大寫,并且指出完 整含義。參數(shù)的命名:參數(shù)的名字必須和變量的命名規(guī)范一致。數(shù)組的命名:數(shù)組應(yīng)該總是用下面的方式來命名:byte口 buf
3、fer;而不是byte buffer口;方法的參數(shù):使用有意義的參數(shù)命名,如果可能的話,使用和要賦值的字 段一樣的名字:SetCounter(int size)this.size = size;1.3 文件命名規(guī)范文件名由英文單詞組成,每個單詞的首字母大寫,不要超過4個單詞,如 ShipOrder.jspJava文件的文件名要與程序中的public類名相同。Servet文件要以 Servlet做為結(jié)尾,如 AddCompanyServlet.java 業(yè)務(wù)處理組件JavaBean要以Bean為結(jié)尾,如ProcessBean.java1.4 Java文件樣式所有的Java(*java)文件都必須
4、遵守如下的樣式規(guī)則頭部 版權(quán)信息 版權(quán)信息必須在java文件的開頭,比如:/* Copyright 2002 Sun Microsystems, Inc. All rights reserved.*/其他不需要出現(xiàn)在javadoc的信息也可以包含在這里。Package/Importspackage行要在import行之前,import中標準的包名要在本地的包名之前,而且按照字母順序排列。如果 import行中包含了同一個包中的不同子目錄,則應(yīng)該用*來處理。package .stats;import java.io.*;import java.util.Observable;import hot
5、lava.util.Application;這里 java.io.* 使用來代替 InputStream and OutputStreamS。Class接下來的是類的注釋,一般是用來解釋類的相關(guān)信息,包括標題、描述、。/* <p>Title: Example</p>* <p>Description: AuditApplicationExample</p><p>Copyright: Copyright (c) 200x</p><p>Company: xxxxx</p>author xxxxxx* ve
6、rsion 1.0*/接下來是類定義,包含了在不同的行的extends和implementspublic class CounterSet extends Observable implements CloneableClass Fields接下來是類的成員變量:/* Packet counters*/protected int packets;public 的成員變量必須生成文檔(JavaDo© 。 protected private 和 package定義的成員變量如果名字含義明確的話,可以沒有注釋。存取方法接下來是類變量的存取的方法。它只是簡單的用來將類的變量賦值獲取值 的話,
7、可以簡單的寫在一行上。/* 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 copyArray(packets, offset); public int getBytes() return copyArray(bytes, offset); public int getPackets() return
8、 packets; public void setPackets(int口 packets) this.packets = packets; 其它的方法不要寫在一行上構(gòu)造函數(shù)接下來是構(gòu)造函數(shù),它應(yīng)該用遞增的方式寫(比如:參數(shù)多的寫在后面)。 訪問類型("public", "private"等.)和任何"static", "final"或"synchronized 應(yīng)該在一行中。Public CounterSet (int size) this.size = size;克隆方法如果這個類是可以被克隆的,那么
9、下一步就是clone方法: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: " + e.getMessage(); 類方法卜面開始寫類的方法:* Set the pac
10、ket counters* (such as when restoring from a database)*/protected finalvoid setArray(int r1, int r2, int r3, int r4)throws IllegalArgumentException/ Ensure the arrays are of equal size/if (r1.length != r2.length | r1.length != r3.length | r1.length != r4.length) throw new IllegalArgumentException(&q
11、uot;Arrays must be of the same size"); System.arraycopy(r1,0, r3, 0, r1.length);System.arraycopy(r2, 0, r4, 0, r1.length);toString 方法無論如何,每一個類都應(yīng)該定義toString方法:publicString toString() String retval = "CounterSet:"for (int i = 0; i < data.length(); i+) retval += data.bytes.toString();
12、retval += data.packets.toString();return retval;main方法如果main(String)方法已經(jīng)定義了 ,那么它應(yīng)該寫在類的底部.1.5代碼編寫格式代碼樣式代碼應(yīng)該用unix的格式,而不是windows的(比如:回車變成回車+換行) 文檔化必須用javadoc來為類生成文檔。不僅因為它是標準,這也是被各種java編譯器都認可的方法??s進縮進應(yīng)該是每行4個空格.不要在源文件中保存Tab字符.在使用不同的源 代碼管理工具時Tab字符將因為用戶設(shè)置的不同而擴展為不同的寬度.如果你使用UltraEdit作為Java源代碼編輯器的話,你可以通過如下操作來禁
13、止 保存Tab字符,方法是通過UltrEdit中先設(shè)定Tab使用的長度是4個空格,然后 用Format|Tabs to Space菜單將Tab轉(zhuǎn)換為空格。頁寬頁寬應(yīng)該設(shè)置為80字符.源代碼一般不會超過這個寬度,并導致無法完整顯 示,但這一設(shè)置也可以靈活調(diào)整.在任何情況下,超長的語句應(yīng)該在一個逗號或者 一個操作符后折行.一條語句折行后,應(yīng)該比原來的語句再縮進2個字符.程序塊要有大括號,即使只有一句程序中的語句應(yīng)該單獨作為一行.例如,下面的第1行是錯誤的,第2行是正確的:if (i>0) i + ; 錯誤,和在同一行if (i>0) i +; /正確,單獨作為一行語句永遠單獨作為一行.
14、如果語句應(yīng)該縮進到與其相對應(yīng)的那一行相對齊的位置。括號左括號和后一個字符之間不應(yīng)該出現(xiàn)空格,同樣,右括號和前一個字符之間也不應(yīng)該出現(xiàn)空格.下面的例子說明括號和空格的錯誤及正確使用:CallProc( AParameter ); 錯誤CallProc(AParameter); 正確 不要在語句中使用無意義的括號.括號只應(yīng)該為達到某種目的而出現(xiàn)在源代碼 中。下面的例子說明錯誤和正確的用法:if (I) = 42) /錯誤-括號毫無意義if (I = 42) or (J = 42) then / 正確-的確需要括號import對于import語句,如果某一個包中引用的類不超過三個(包括三個),不 允
15、許用import xxx.*;格式。變量定義及方法的返回值不允許使用全包名,如java.lang.String,除非在不同的包中有相同名字的類,必須用全名來區(qū)分。對于類中屬性的存取要用方法(getXXX/setXXX , boolean值用 isXXX/setXXX ),不要直接引用。第二章程序編寫規(guī)范方法2.1權(quán)限修飾Java中權(quán)限修飾符有三個:public,private,protected,另外一種是不寫這三種的 任何一個,稱為(default).1)對于外部類,只能用 public或(default),而且一個文件中最多只能有一個 public類。但是內(nèi)部類這四種都可以使用。2)如果對
16、某些數(shù)據(jù)或方法只允許其所在類使用,用 private修飾。3)如果對某些數(shù)據(jù)或方法允許本類或同包類使用,用(default),即不寫任何修飾符。4)如果對某些數(shù)據(jù)或方法允許本類,同包類,或非同包子類使用,用 protected.如果對某些數(shù)據(jù)或方法允許任何類使用,用 public修飾。2.2 其他規(guī)范exit()exit除了在main中可以被調(diào)用外,其他的地方不應(yīng)該調(diào)用。因為這樣做不 給任何代碼代碼機會來截獲退出。一個類似后臺服務(wù)的程序不應(yīng)該因為某一個 庫模塊決定了要退出就退出。異常關(guān)鍵操作如涉及到數(shù)據(jù)庫操作和多個關(guān)鍵處理步驟時應(yīng)當采用try,catch語句,以便于捕獲異常(各類 Except
17、ion)和異常處理。垃圾收集JAVA使用成熟的后臺垃圾收集技術(shù)來代替引用計數(shù)。但是這樣會導致一個 問題:必須在使用完對象的實例以后進行清場工作。除非輸出流一出作用域就關(guān)閉,非引用計數(shù)的程序語言,比如JAVA,是不能自動完成變量的清場工作的。必須象下面一樣寫:FileOutputStream fos = new FileOutputStream(projectFile);project.save(fos, "IDE Project File");fos.close();Clone卜面是一種有用的方法:implements CloneablepublicObject clone
18、() try ThisClass obj = (ThisClass)super.clone();obj.field1 = (int)field1.clone();obj.field2 = field2; return obj; catch(CloneNotSupportedException e) throw new InternalError("Unexpected CloneNotSUpportedException: " + e.getMessage(); final 類絕對不要因為性能的原因?qū)㈩惗x為 final的(除非程序的框架要求) 如果一個類還沒有準備好被繼承
19、,最好在類文檔中注明,而不要將她定義為 final的。這是因為沒有人可以保證會不會由于什么原因需要繼承她。訪問類的成員變量大部分的類成員變量應(yīng)該定義為 protected的來防止繼承類使用他們。注意,要用"int packets",而不是"int packets口",后一種永遠也不要用。public void setPackets(int口 packets) this.packets = packets; CounterSet(int size)this.size = size;2.3 編程指南1、byte 數(shù)組轉(zhuǎn)換到 characters為了將byte
20、數(shù)組轉(zhuǎn)換到characters可以這么做:"Hello world!".getBytes();2、Utility 類Utility類(僅僅提供方法的類)應(yīng)該被申明為抽象的來防止被繼承或被初 始化。3、初始化下面的代碼是一種很好的初始化數(shù)組的方法:objectArguments = new Object口 arguments ;4、枚舉類型JAVA對枚舉的支持不好,但是下面的代碼是一種很有用的模板:class Colour public static final Colour BLACK = new Colour(0, 0, 0);public static final Co
21、lour 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 WHITE = new Colour(0xFF, 0xFF, 0xFF); 這種技術(shù)實現(xiàn)了 RED, GREEN, BLUE等可以象其他語言的枚舉類型一樣使用的常量。他們可以用'='操作符來比較。 但是這樣使用有一個缺陷:如果一個用戶用這樣的方法來創(chuàng)建顏色 BLACKnew Colour(0,0,0)那么這就是另外一個對象,'='操作符就會產(chǎn)生錯誤。她的 equal()方法仍 然有效。由于這個原因,這個技術(shù)的缺陷最好注明在文檔中,或者只在自己的 包中使用。性能1、在寫代碼的時候,從頭至尾都應(yīng)該考慮性能問題,要注意代碼的效率。2、不必要的對象構(gòu)造3、不要在循環(huán)中構(gòu)造和釋放對象4、使用 StringBuffer 對象在處理 String的時候要盡量
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度服裝工廠員工福利保障合同
- 二零二五年度跨區(qū)域企業(yè)員工人事合同與勞動合同同步執(zhí)行細則
- 二零二五年度特色小鎮(zhèn)店面轉(zhuǎn)租及民宿經(jīng)營協(xié)議
- 2025至2030年中國纖維氈制品數(shù)據(jù)監(jiān)測研究報告
- 2025年度離職員工保密協(xié)議及競業(yè)限制合同
- 二零二五年度企業(yè)知識產(chǎn)權(quán)戰(zhàn)略規(guī)劃與律師事務(wù)所合作合同
- 二零二五年度物流企業(yè)專業(yè)司機聘用及安全保障合同
- 2025裝卸工安全責任及應(yīng)急處理協(xié)議
- 2025年度金融扶貧幫困合作框架協(xié)議
- 二零二五年度物流行業(yè)實習生聘用與供應(yīng)鏈管理合同
- 2024年開學第一課:人工智能與未來教育
- 拇外翻課件完整版本
- 2025年中國洗衣凝珠行業(yè)市場現(xiàn)狀及投資態(tài)勢分析報告(智研咨詢)
- 2025年四川省新高考八省適應(yīng)性聯(lián)考模擬演練二歷史試卷(含答案)
- DB41T 2466-2023 浸水電梯使用管理規(guī)范
- 國家智慧教育平臺應(yīng)用培訓
- 呼吸系統(tǒng)疾病病人的麻醉-2
- 內(nèi)蒙古醫(yī)科大學同等學力英語真題
- 專題18 化學工藝流程綜合題-分離、提純類-五年(2020-2024)高考化學真題分類匯編(解析版)
- 汽車美容裝潢技術(shù)電子教案 6.3-汽車娛樂類電子產(chǎn)品裝飾
- 防性侵安全教育課件
評論
0/150
提交評論