JAVA代碼編程規(guī)范
類的成員變量定義
大部分類的成員變量應(yīng)該定義為protected來防止繼承類使用他們。
數(shù)組標(biāo)識
要用"int[]packets",而不是"intpackets[]",后一種永遠也不要用。
成員變量與函數(shù)內(nèi)局部變量用this
publicvoidsetPackets(int[]packets){this.packets=packets;}//一般函數(shù)
CounterSet(intsize){this.size=size;}//構(gòu)造函數(shù)
可讀性
避免使用不易理解的數(shù)字,用有意義的標(biāo)識來替代。不要使用難懂的技巧性很高的語句。
源程序中關(guān)系較為緊密的代碼應(yīng)盡可能相鄰。
可移植性
BorlandJbulider不喜歡synchronized這個關(guān)鍵字,如果你的斷點設(shè)在這些關(guān)鍵字的作用域內(nèi)的話,調(diào)試的時候你會發(fā)現(xiàn)的斷點會到處亂跳,讓你不知所措。除非必須,盡量不要使用。
換行
如果要換行的話,盡量用println來代替在字符串中使用"\n"。
你不要這樣:System.out.print("Hello,world!\n");
要這樣:System.out.println("Hello,world!");
或者構(gòu)造一個帶換行符的字符串,至少要象這樣:
Stringnewline=System.getProperty("line.separator");
System.out.print("Helloworld"+newline);
PrintStream
PrintStream已經(jīng)被不贊成(deprecated)使用,用PrintWrite來代替她。
排版規(guī)范
關(guān)鍵詞和操作符之間加適當(dāng)?shù)目崭瘛?/span>
相對獨立的程序塊與塊之間加空行。
較長的語句、表達式等要分成多行書寫。
劃分出的新行要進行適應(yīng)的縮進,使排版整齊,語句可讀。
長表達式要在低優(yōu)先級操作符處劃分新行,操作符放在新行之首。
循環(huán)、判斷等語句中若有較長的表達式或語句,則要進行適應(yīng)的劃分。
若函數(shù)或過程中的參數(shù)較長,則要進行適當(dāng)?shù)膭澐帧?/span>
不允許把多個短語句寫在一行中,即一行只寫一條語句。
函數(shù)或過程的開始、結(jié)構(gòu)的定義及循環(huán)、判斷等語句中的代碼都要采用縮進風(fēng)格。
編寫程序塊時‘{’和‘}’應(yīng)各獨占一行并且位于同一列,同時與引用它們的語句左對齊。在函數(shù)體的開始、類的定義、結(jié)構(gòu)的定義、枚舉的定義以及if、for、do、while、switch、case語句中的程序都要采用如上的縮進方式。
性能
在寫代碼的時候,從頭至尾都應(yīng)該考慮性能問題。這不是說時間都應(yīng)該浪費在優(yōu)化代碼上,而是我們時刻應(yīng)該提醒自己要注意代碼的效率。比如:如果沒有時間來實現(xiàn)一個高效的算法,那么我們應(yīng)該在文檔中記錄下來,以便在以后有空的時候再來實現(xiàn)她。
不是所有的人都同意在寫代碼的時候應(yīng)該優(yōu)化性能這個觀點的,他們認(rèn)為性能優(yōu)化的問題應(yīng)該在項目的后期再去考慮,也就是在程序的輪廓已經(jīng)實現(xiàn)了以后。
不要在循環(huán)中構(gòu)造和釋放對象
使用StringBuffer對象
在處理String的時候要盡量使用StringBuffer類,StringBuffer類是構(gòu)成String類的基礎(chǔ)。String類將StringBuffer類封裝了起來,(以花費更多時間為代價)為開發(fā)人員提供了一個安全的接口。當(dāng)我們在構(gòu)造字符串的時候,我們應(yīng)該用StringBuffer來實現(xiàn)大部分的工作,當(dāng)工作完成后將StringBuffer對象再轉(zhuǎn)換為需要的String對象。比如:如果有一個字符串必須不斷地在其后添加許多字符來完成構(gòu)造,那么我們應(yīng)該使用StringBuffer對象和她的append()方法。如果我們用String對象代替StringBuffer對象的話,會花費許多不必要的創(chuàng)建和釋放對象的CPU時間。
避免太多或不必要的使用synchronized關(guān)鍵字
,應(yīng)該在必要的時候再使用她,這是個避免死鎖的好方法。
代碼測試、維護
1.單元測試要求至少達到語句覆蓋。
2.單元測試開始要跟蹤每一條語句,并觀察數(shù)據(jù)流及變量的變化。
3.清理、整理或優(yōu)化后的代碼要經(jīng)過審查及測試。
4.代碼版本升級要經(jīng)過嚴(yán)格測試。