Java程序的編碼規(guī)范_第1頁(yè)
Java程序的編碼規(guī)范_第2頁(yè)
Java程序的編碼規(guī)范_第3頁(yè)
Java程序的編碼規(guī)范_第4頁(yè)
Java程序的編碼規(guī)范_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、Java程序的編碼規(guī)范所有的程序開(kāi)發(fā)手冊(cè)都包含了各種規(guī)則。一些習(xí)慣自由程序人員可能對(duì)這些規(guī)則很不適應(yīng),但是在多個(gè)開(kāi)發(fā)人員共同寫作的情況下,這些規(guī)則是必需的。這不僅僅是為了開(kāi)發(fā)效率來(lái)考慮,而且也是為了后期維護(hù)考慮。一、命名規(guī)范定義這個(gè)規(guī)范的目的是讓項(xiàng)目中所有的文檔都看起來(lái)像一個(gè)人寫的,增加可讀性,減少項(xiàng)目組中因?yàn)閾Q人而帶來(lái)的損失。(這些規(guī)范并不是一定要絕對(duì)遵守,但是一定要讓程序有良好的可讀性)> Package 的命名Package 的名字應(yīng)該都是由一個(gè)小寫單詞組成。> Class 的命名Class 的名字必須由大寫字母開(kāi)頭而其他字母都小寫的單詞組成。> Class 變量的命名

2、變量的名字必須用一個(gè)小寫字母開(kāi)頭。后面的單詞用大寫字母開(kāi)頭。> Static Final 變量的命名Static Final 變量的名字應(yīng)該都大寫,并且指出完整含義。> 參數(shù)的命名參數(shù)的名字必須和變量的命名規(guī)范一致。> 數(shù)組的命名數(shù)組應(yīng)該總是用下面的方式來(lái)命名:1. byte buffer; 而不是:1. byte buffer; > 方法的參數(shù)使用有意義的參數(shù)命名,如果可能的話,使用和要賦值的字段一樣的名字:1. SetCounter(int size) 2. 3. this.size = size;4. 二、Java文件樣式所有的 Java(*.java) 文件都必

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

4、port java.util.Observable; 4. import hotlava.util.Application; 這里 java.io.* 使用來(lái)代替InputStream and OutputStream的。> Class接下來(lái)的是類的注釋,一般是用來(lái)解釋類的。1. /* 2. * A class representing a set of packet and byte counters 3. * It is observable to allow it to be watched, but only 4. * reports changes when the curre

5、nt set is complete 5. */ 6. 接下來(lái)是類定義,包含了在不同的行的 extends 和 implements :1. public class CounterSet 2. extends Observable 3. implements Cloneable > Class Fields接下來(lái)是類的成員變量:1. /* 2. * Packet counters 3. */ 4. protected int packets; 5. public 的成員變量必須生成文檔(JavaDoc)。proceted、private和 package 定義的成員變量如果名字含義明確

6、的話,可以沒(méi)有注釋。> 存取方法接下來(lái)是類變量的存取的方法。它只是簡(jiǎn)單的用來(lái)將類的變量賦值獲取值的話,可以簡(jiǎn)單的寫在一行上。1. /* 2. * Get the counters 3. * return an array containing the statistical data. This array has been 4. * freshly allocated and can be modified by the caller. 5. */ 6. 7. public int getPackets() return copyArray(packets, offset); 8. p

7、ublic int getBytes() return copyArray(bytes, offset); 9. public int getPackets() return packets; 10. public void setPackets(int packets) this.packets = packets; 其它的方法不要寫在一行上。> 構(gòu)造函數(shù)接下來(lái)是構(gòu)造函數(shù),它應(yīng)該用遞增的方式寫(比如:參數(shù)多的寫在后面)。訪問(wèn)類型 (“public”, “private”等) 和任何“static”,“final”或“synchronized”應(yīng)該在一行中,并且方法和參數(shù)另寫一行,這樣可

8、以使方法和參數(shù)更易讀。1. public 2. CounterSet(int size) 3. this.size = size; 4. > 克隆方法如果這個(gè)類是可以被克隆的,那么下一步就是clone方法:1. public 2. Object clone() 3. 4. try 5. CounterSet obj = (CounterSet)super.clone(); 6. obj.packets = (int)packets.clone(); 7. obj.size = size; 8. return obj; 9. catch(CloneNotSupportedException

9、 e) 10. throw new InternalError("Unexpected CloneNotSUpportedException: " + e.getMessage(); 11. 12. > 類方法下面開(kāi)始寫類的方法:1. /* 2. * Set the packet counters 3. * (such as when restoring from a database) 4. */ 5. 6. protected final void setArray(int r1, int r2, int r3, int r4)throws IllegalArgu

10、mentException 7. 8. 9. / 10. / Ensure the arrays are of equal size 11. / 12. if (r1.length != r2.length | r1.length != r3.length | r1.length != r4.length)13. throw new IllegalArgumentException("Arrays must be of the same size"); 14. System.arraycopy(r1, 0, r3, 0, r1.length); 15. System.arr

11、aycopy(r2, 0, r4, 0, r1.length); 16. > toString 方法無(wú)論如何,每一個(gè)類都應(yīng)該定義toString 方法:1. public String toString() 2. 3. String retval = "CounterSet: " 4. for (int i = 0; i<data.length();i+) 5. retval += data.bytes.toString(); 6. retval += data.packets.toString(); 7. 8. return retval; 9. 10. &g

12、t; main 方法如果main(String) 方法已經(jīng)定義了,那么它應(yīng)該寫在類的底部。三、代碼編寫格式> 代碼樣式代碼應(yīng)該用 unix 的格式,而不是 windows 的(比如:回車變成回車+換行) 。> 文檔化必須用 javadoc 來(lái)為類生成文檔。不僅因?yàn)樗菢?biāo)準(zhǔn),這也是被各種 java 編譯器都認(rèn)可的方法。使用 author 標(biāo)記是不被推薦的,因?yàn)榇a不應(yīng)該是被個(gè)人擁有的。> 縮進(jìn)縮進(jìn)應(yīng)該是每行2個(gè)空格。不要在源文件中保存Tab字符。在使用不同的源代碼管理工具時(shí)Tab字符將因?yàn)橛脩粼O(shè)置的不同而擴(kuò)展為不同的寬度。如果你使用 UltrEdit 作為你的 Java 源代碼

13、編輯器的話,你可以通過(guò)如下操作來(lái)禁止保存Tab字符,方法是通過(guò) UltrEdit中先設(shè)定 Tab 使用的長(zhǎng)度室2個(gè)空格,然后用 Format|Tabs to Spaces 菜單將 Tab 轉(zhuǎn)換為空格。> 頁(yè)寬頁(yè)寬應(yīng)該設(shè)置為80字符。源代碼一般不會(huì)超過(guò)這個(gè)寬度,并導(dǎo)致無(wú)法完整顯示,但這一設(shè)置也可以靈活調(diào)整。在任何情況下,超長(zhǎng)的語(yǔ)句應(yīng)該在一個(gè)逗號(hào)或者一個(gè)操作符后折行。一條語(yǔ)句折行后,應(yīng)該比原來(lái)的語(yǔ)句再縮進(jìn)2個(gè)字符。> 對(duì) 中的語(yǔ)句應(yīng)該單獨(dú)作為一行。例如,下面的第1行是錯(cuò)誤的第2行是正確的:1. if (i>0) i + ; / 錯(cuò)誤, 和 在同一行 2. if (i>0)

14、3. i + 4. ; / 正確, 單獨(dú)作為一行 5. 語(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ò)誤及正確使用:1. CallProc( AParameter ); / 錯(cuò)誤 2. CallProc(AParameter); / 正確 不要在語(yǔ)句中使用無(wú)意義的括號(hào)。括號(hào)只應(yīng)該為達(dá)到某種目的而出現(xiàn)在源代碼中。下面的例子說(shuō)明錯(cuò)誤和正確的用法:1. if (I) = 42) / 錯(cuò)誤 - 括號(hào)毫無(wú)意義 2. if (I = 42) or (J

15、 = 42) then / 正確 - 的確需要括號(hào) 四、程序編寫規(guī)范> exit()exit除了在main中可以被調(diào)用外,其他的地方不應(yīng)該調(diào)用。因?yàn)檫@樣做不給任何代碼代碼機(jī)會(huì)來(lái)截獲退出。一個(gè)類似后臺(tái)服務(wù)地程序不應(yīng)該因?yàn)槟骋粋€(gè)庫(kù)模塊決定了要退出就退出。> 異常申明的錯(cuò)誤應(yīng)該拋出一個(gè)RuntimeException或者派生的異常。頂層的main()函數(shù)應(yīng)該截獲所有的異常,并且打印(或者記錄在日志中)在屏幕上。> 垃圾收集JAVA使用成熟的后臺(tái)垃圾收集技術(shù)來(lái)代替引用計(jì)數(shù)。但是這樣會(huì)導(dǎo)致一個(gè)問(wèn)題:你必須在使用完對(duì)象的實(shí)例以后進(jìn)行清場(chǎng)工作。比如一個(gè)prel的程序員可能這么寫:1. . 2. 3. FileOutputStream fos = new FileOutputStream(projectFile); 4. project.save(fos, "IDE Project File"); 5. 6. . 除非輸出流一出作用域就關(guān)閉,非引用計(jì)數(shù)的程序語(yǔ)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(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)論