




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、軟件開發(fā)代碼規(guī)范軟件開發(fā)代碼規(guī)范(C)(僅通普信息技術(shù)股份有限公司供內(nèi)部使用僅通普信息技術(shù)股份有限公司供內(nèi)部使用)擬制:擬制:楊超日期:日期:2015-3-10審核:審核:夏峰日期:日期:2015-3-10核準(zhǔn):核準(zhǔn):馮敬剛?cè)掌冢喝掌冢?015-3-17簽發(fā):簽發(fā):韓殿成日期:日期:2015-3-21文檔版本:文檔版本:V1.11黑龍江通普信息技術(shù)股份有限公司黑龍江通普信息技術(shù)股份有限公司Java 開發(fā)編碼規(guī)范第 2 頁版本歷史版本歷史日期日期版本版本說明說明作者作者Java 開發(fā)編碼規(guī)范第 0 頁目錄目錄第一章第一章 代碼開發(fā)規(guī)范及其指南代碼開發(fā)規(guī)范及其指南 .11.1 目的.11.2 程序
2、內(nèi)命名規(guī)范.11.3 文件命名規(guī)范.21.4 JAVA 文件樣式.21.5 代碼編寫格式.6第二章第二章 程序編寫規(guī)范方法程序編寫規(guī)范方法 .82.1 權(quán)限修飾.82.2 其他規(guī)范.82.3 編程指南.10第三章第三章 其他要求其他要求 .12Java 開發(fā)編碼規(guī)范第 0 頁第一章第一章 代碼開發(fā)規(guī)范代碼開發(fā)規(guī)范及其指南及其指南1.1 目的目的定義這個規(guī)范的目的是讓項(xiàng)目中所有的文檔都看起來像一個人寫的,增加可讀性,減少項(xiàng)目組中因?yàn)閾Q人而帶來的損失。(這些規(guī)范并不是一定要絕對遵守,但是一定要讓程序有良好的可讀性) 1.2 程序內(nèi)命名規(guī)范程序內(nèi)命名規(guī)范Package 的命名 :Package 的名
3、字應(yīng)該都是由一個小寫單詞組成。 Class 的命名 :Class 的名字必須由大寫字母開頭而其他字母都小寫的單詞組成 Class 變量變量的命名 :變量的名字必須用一個小寫字母開頭。后面的單詞用大寫字母開頭。 Static Final 變量變量的命名 :Static Final 變量的名字應(yīng)該都大寫,并且指出完整含義。 參數(shù)的命名參數(shù)的命名 :參數(shù)的名字必須和變量的命名規(guī)范一致。 數(shù)組的命名數(shù)組的命名 :數(shù)組應(yīng)該總是用下面的方式來命名: byte buffer; 而不是 byte buffer;方法的參數(shù)方法的參數(shù) :使用有意義的參數(shù)命名,如果可能的話,使用和要賦值的字段一樣的名字: SetC
4、ounter(int size)this.size = size;Java 開發(fā)編碼規(guī)范第 1 頁1.3 文件命名規(guī)范文件命名規(guī)范文件名由英文單詞組成,每個單詞的首字母大寫,不要超過 4 個單詞,如 ShipOrder.jsp。Java 文件的文件名要與程序中的 public 類名相同。Servet 文件要以 Servlet 做為結(jié)尾,如 AddCompanyServlet.java業(yè)務(wù)處理組件 JavaBean 要以 Bean 為結(jié)尾,如 ProcessBean.java1.4 Java 文件樣式文件樣式 所有的 Java(*.java) 文件都必須遵守如下的樣式規(guī)則 頭部頭部版權(quán)信息 版權(quán)
5、信息必須在 java 文件的開頭,比如: /* Copyright 2002 Sun Microsystems, Inc. All rights reserved.*/其他不需要出現(xiàn)在 javadoc 的信息也可以包含在這里。Package/Imports package 行要在 import 行之前,import 中標(biāo)準(zhǔn)的包名要在本地的包名之前,而且按照字母順序排列。如果 import 行中包含了同一個包中的不同子目錄,則應(yīng)該用 * 來處理。 package .stats;import java.io.*;import java.util.Observable;import hotlava.
6、util.Application;Java 開發(fā)編碼規(guī)范第 2 頁這里 java.io.* 使用來代替 InputStream and OutputStream 的。Class 接下來的是類的注釋,一般是用來解釋類的相關(guān)信息,包括標(biāo)題、描述、。 /* * Title: Example * Description: AuditApplicationExample * Copyright: Copyright (c) 200 x * Company: xxxxx * author xxxxxx * version 1.0 */接下來是類定義,包含了在不同的行的 extends 和 implemen
7、ts public class CounterSet extends Observable implements CloneableClass Fields 接下來是類的成員變量: /* Packet counters*/protected int packets;public 的成員變量必須生成文檔(JavaDoc)。protected、private 和 package 定義的成員變量如果名字含義明確的話,可以沒有注釋。存取方法存取方法 接下來是類變量的存取的方法。它只是簡單的用來將類的變量賦值獲取值的話,可以簡單的寫在一行上。 /* Get the countersJava 開發(fā)編碼規(guī)范
8、第 3 頁* 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 packets; public void set
9、Packets(int packets) this.packets = packets; 其它的方法不要寫在一行上構(gòu)造函數(shù)構(gòu)造函數(shù) 接下來是構(gòu)造函數(shù),它應(yīng)該用遞增的方式寫(比如:參數(shù)多的寫在后面)。 訪問類型 (public, private 等.) 和 任何 static, final 或 synchronized 應(yīng)該在一行中。 Public CounterSet (int size)this.size = size;克隆方法克隆方法 如果這個類是可以被克隆的,那么下一步就是 clone 方法: public Object clone() try CounterSet obj = (Cou
10、nterSet)super.clone();obj.packets = (int)packets.clone();obj.size = size;return obj;catch(CloneNotSupportedException e) throw new InternalError(Unexpected CloneNotSUpportedException: + e.getMessage();Java 開發(fā)編碼規(guī)范第 4 頁類方法類方法 下面開始寫類的方法: /* Set the packet counters* (such as when restoring from a databas
11、e)*/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(Arrays must be of the same size);System.arraycopy(r1, 0
12、, 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 0) i + ; / 錯誤, 和 在同一行 if (i0) i + ; / 正確, 單獨(dú)作為一行 Java 開發(fā)編碼規(guī)范第 6 頁 語句永遠(yuǎn)單獨(dú)作為一行.如果 語句應(yīng)該縮進(jìn)到與其相對應(yīng)的 那一行相對齊的位置。括號括號 左括號和后一個字符之間不應(yīng)該出現(xiàn)空格
13、, 同樣, 右括號和前一個字符之間也不應(yīng)該出現(xiàn)空格. 下面的例子說明括號和空格的錯誤及正確使用: CallProc( AParameter ); / 錯誤 CallProc(AParameter); / 正確 不要在語句中使用無意義的括號. 括號只應(yīng)該為達(dá)到某種目的而出現(xiàn)在源代碼中。下面的例子說明錯誤和正確的用法: if (I) = 42) / 錯誤 - 括號毫無意義 if (I = 42) or (J = 42) then / 正確 - 的確需要括號 import對于 import 語句,如果某一個包中引用的類不超過三個(包括三個),不允許用 import xxx.*;格式。變量變量 定義及
14、方法的返回值不允許使用全包名,如 java.lang.String,除非在不同的包中有相同名字的類,必須用全名來區(qū)分。對于類中屬性的存取要用方法(getXXX/setXXX,boolean 值用 isXXX/setXXX),不要直接引用。Java 開發(fā)編碼規(guī)范第 7 頁第二章第二章 程序編寫規(guī)范方法程序編寫規(guī)范方法 2.1 權(quán)限修飾權(quán)限修飾 Java 中權(quán)限修飾符有三個:public,private,protected,另外一種是不寫這三種的任何一個,稱為(default).1)對于外部類,只能用 public 或(default),而且一個文件中最多只能有一個public 類。但是內(nèi)部類這四
15、種都可以使用。2)如果對某些數(shù)據(jù)或方法只允許其所在類使用,用 private 修飾。3)如果對某些數(shù)據(jù)或方法允許本類或同包類使用,用(default),即不寫任何修飾符。4)如果對某些數(shù)據(jù)或方法允許本類,同包類,或非同包子類使用,用protected.如果對某些數(shù)據(jù)或方法允許任何類使用,用 public 修飾。2.2 其他規(guī)范其他規(guī)范exit() exit 除了在 main 中可以被調(diào)用外,其他的地方不應(yīng)該調(diào)用。因?yàn)檫@樣做不給任何代碼代碼機(jī)會來截獲退出。一個類似后臺服務(wù)的程序不應(yīng)該因?yàn)槟骋粋€庫模塊決定了要退出就退出。 異常異常 關(guān)鍵操作如涉及到數(shù)據(jù)庫操作和多個關(guān)鍵處理步驟時應(yīng)當(dāng)采用 try,c
16、atch 語句,以便于捕獲異常(各類 Exception)和異常處理。垃圾收集垃圾收集 JAVA 使用成熟的后臺垃圾收集技術(shù)來代替引用計(jì)數(shù)。但是這樣會導(dǎo)致一個問題:必須在使用完對象的實(shí)例以后進(jìn)行清場工作。Java 開發(fā)編碼規(guī)范第 8 頁除非輸出流一出作用域就關(guān)閉,非引用計(jì)數(shù)的程序語言,比如 JAVA,是不能自動完成變量的清場工作的。必須象下面一樣寫: FileOutputStream fos = new FileOutputStream(projectFile);project.save(fos, IDE Project File); fos.close();Clone 下面是一種有用的方法:
17、 implements CloneablepublicObject clone()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 類類 絕對不要因?yàn)樾阅艿脑驅(qū)㈩惗x為 final 的
18、(除非程序的框架要求) 如果一個類還沒有準(zhǔn)備好被繼承,最好在類文檔中注明,而不要將她定義為 final 的。這是因?yàn)闆]有人可以保證會不會由于什么原因需要繼承她。 訪問類的成員變量 大部分的類成員變量應(yīng)該定義為 protected 的來防止繼承類使用他們。 Java 開發(fā)編碼規(guī)范第 9 頁注意,要用int packets,而不是int packets,后一種永遠(yuǎn)也不要用。 public void setPackets(int packets) this.packets = packets; CounterSet(int size)this.size = size;2.3 編程指南編程指南 1、b
19、yte 數(shù)組轉(zhuǎn)換到 characters 為了將 byte 數(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,
20、 0, 0);public static final Colour RED = new Colour(0 xFF, 0, 0);public static final Colour GREEN = new Colour(0, 0 xFF, 0);public static final Colour BLUE = new Colour(0, 0, 0 xFF);public static final Colour WHITE = new Colour(0 xFF, 0 xFF, 0 xFF);這種技術(shù)實(shí)現(xiàn)了 RED, GREEN, BLUE 等可以象其他語言的枚舉類型一樣使用的常量。 他們可以用
21、 = 操作符來比較。 但是這樣使用有一個缺陷:如果一Java 開發(fā)編碼規(guī)范第 10 頁個用戶用這樣的方法來創(chuàng)建顏色 BLACK new Colour(0,0,0) 那么這就是另外一個對象,=操作符就會產(chǎn)生錯誤。她的 equal() 方法仍然有效。由于這個原因,這個技術(shù)的缺陷最好注明在文檔中,或者只在自己的包中使用。 性能性能 1、在寫代碼的時候,從頭至尾都應(yīng)該考慮性能問題,要注意代碼的效率。 2、不必要的對象構(gòu)造 3、不要在循環(huán)中構(gòu)造和釋放對象 4、使用 StringBuffer 對象 在處理 String 的時候要盡量使用 StringBuffer 類,StringBuffer 類是構(gòu)成 String 類的基礎(chǔ)。String 類將 StringBuffer 類封裝了起來,(以花費(fèi)更多時間為代價)
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 快遞公司務(wù)工合同協(xié)議
- 員工終止合同協(xié)議書模板
- 商品房房屋定金合同協(xié)議
- 疝的微創(chuàng)治療
- 退學(xué)協(xié)議書范例
- 流感處理與治療方法
- 餐館轉(zhuǎn)讓合同書范例
- 區(qū)塊鏈技術(shù)與現(xiàn)代企業(yè)合作模式的重塑
- 全新訴訟保全擔(dān)保協(xié)議書
- 帶狀皰疹的疼痛與治療
- 漂流免責(zé)協(xié)議書范本
- ISO27001:2022信息安全管理體系全套文件+表單
- 2024-2025學(xué)年人教版四年級數(shù)學(xué)下冊期中測試卷1-4單元(含答案)
- 寶鋼熱鍍鋅鋼板產(chǎn)品手冊
- 成語故事-半途而廢-課件
- 物業(yè)撤場方案
- 2025年山西杏花村汾酒集團(tuán)有限責(zé)任公司招聘筆試參考題庫含答案解析
- 石化石油行業(yè)安全
- 外研版(三起)(2024)三年級下冊英語Unit 4 單元測試卷(含答案)
- 《資治通鑒》與為將之道知到課后答案智慧樹章節(jié)測試答案2025年春武警指揮學(xué)院
- 哪吒2+deepseek爆火彰顯文化自信和科技創(chuàng)新
評論
0/150
提交評論