




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、JavaJava 代碼編程格式規(guī)范代碼編程格式規(guī)范 目目 錄錄 1 1前言前言 .5 5 2 2適用范圍適用范圍 .5 5 3 3命名規(guī)范命名規(guī)范 .5 5 3.1PACKAGE 的命名 .5 3.2CLASS 的命名.5 3.3CLASS 變量的命名.6 3.4STATIC FINAL 變量的命名 .6 3.5常量.6 3.6前后臺變量名稱.6 3.7參數(shù)的命名.6 3.8數(shù)組的命名.6 3.9方法的參數(shù).6 3.10縮寫 .7 3.11 標識符命名中應(yīng)注意的問題.7 3.11.1 變量名禁止取單個字符 .7 3.11.2 不用數(shù)字定義名字 .7 3.11.3 避免標識符名字沖突 .8 3.
2、11.4 用正確的反義詞組命名 .8 3.11.5 避免使用 .8 4 4注釋注釋 .9 9 4.1一般情況下.9 4.2常規(guī)注釋標記說明.9 4.2.1since .9 4.2.2deprecated .9 4.2.3see .9 4.2.4link .10 4.3類和接口注釋說明.10 4.4方法注釋說明.10 5 5書寫格式規(guī)范書寫格式規(guī)范 .1111 5.1樣式.11 5.1.1Java 文件樣式 .11 5.1.2Class 的樣式.12 5.1.3代碼樣式 .15 5.2代碼編寫規(guī)范.15 5.2.1縮進 .15 5.2.2頁寬 .16 5.2.3空行 .16 5.2.4空格的使用
3、 .17 5.2.5的用法 .17 5.2.6循環(huán)、判斷等語句 .18 5.2.7參數(shù)劃分 .18 5.2.8一行只寫一條語句 .19 5.2.9程序塊的分界符 .19 5.3變量編寫規(guī)范.20 5.3.1公共變量 .20 5.3.2局部變量 .21 5.4程序編寫規(guī)范.21 5.4.1exit() .21 5.4.2異常 .21 5.4.3垃圾收集 .22 5.4.4final 類 .22 5.4.5訪問類的成員變量 .22 6 6編程技巧編程技巧 .2222 6.1一般性原則.22 6.1.1檢查所有參數(shù)輸入的有效性。 .23 6.1.2檢查參數(shù)輸入 .23 6.1.3類名應(yīng)準確描述類的功
4、能。 .23 6.1.4避免強制返回值類型 .23 6.1.5讓調(diào)用點顯得易懂、容易理解。 .23 6.1.6減少數(shù)據(jù)類型轉(zhuǎn)換 .23 6.1.7防止程序中的垃圾代碼。 .23 6.1.8減少遞歸調(diào)用。 .23 6.1.9使用數(shù)據(jù)流圖 .24 6.1.10 避免使用 BOOL 參數(shù)。 .24 6.2開發(fā)過程中的技巧.24 6.2.1byte 數(shù)組轉(zhuǎn)換到 characters .24 6.2.2Utility 類 .24 6.2.3初始化數(shù)組 .24 6.2.4枚舉類型 .25 6.2.5Swing .25 6.2.6Z-Order 問題 .26 6.2.7不必要的對象構(gòu)造 .26 6.2.8s
5、ynchronized 關(guān)鍵字 .26 6.3程序效率.26 6.3.1注意代碼的效率 .26 6.3.2提高代碼效率 .26 6.3.3局部效率應(yīng)為全局效率服務(wù) .27 6.3.4循環(huán)體內(nèi)工作量最小化。 .27 6.3.5仔細分析有關(guān)算法,并進行優(yōu)化。 .27 6.3.6改進輸入方式 .27 6.3.7提高調(diào)用不頻繁的代碼效率要慎重 .28 6.3.8提高空間效率 .28 6.3.9循環(huán)的位置 .28 6.3.10 盡量減少循環(huán)嵌套層次。 .29 6.3.11 避免循環(huán)體內(nèi)含判斷語句 .29 6.3.12 不要一味追求緊湊的代碼。 .30 7 7性能性能 .3030 7.1可移植性.30 7
6、.1.1換行 .31 7.1.2PrintStream .31 7.2可測性.31 7.2.1調(diào)測 .31 7.2.2調(diào)測信息串格式 .31 7.2.3在編程中注意單元測試 .32 7.2.4測試準備 .32 7.2.5測試手段 .32 7.2.6調(diào)測開關(guān) .32 7.2.7調(diào)試與測試 .32 7.2.8調(diào)測開關(guān)的級別和類型 .33 7.2.9編寫防錯程序 .33 8 8質(zhì)量保證質(zhì)量保證 .3333 8.1代碼質(zhì)量保證優(yōu)先原則.33 8.2打開的文件要關(guān)閉.33 8.3一致性檢查.34 8.4SWITCH語句必須有DEFAULT分支。 .34 8.5其他質(zhì)量問題.34 9 9代碼編輯、編譯、審
7、查代碼編輯、編譯、審查 .3434 9.1統(tǒng)一編譯環(huán)境.34 9.2代碼走讀及評審.34 9.3QA 代碼抽查 .35 9.4軟件系統(tǒng)目錄.35 1 前言前言 為確保系統(tǒng)源程序可讀性,從而增強系統(tǒng)可維護性,java編程人員應(yīng)具有 基本類似的編程風(fēng)格,茲制定下述Java編程規(guī)范,以規(guī)范系統(tǒng)Java部分編程。 系統(tǒng)繼承的其它資源中的源程序也應(yīng)按此規(guī)范作相應(yīng)修改。 2 適用范圍適用范圍 本文檔將作為java編程人員軟件開發(fā)的編程格式規(guī)范。在項目Java部分的 編碼、測試及維護過程中,要求嚴格遵守。 3 命名規(guī)范命名規(guī)范 定義這個規(guī)范的目的是讓項目中所有的文檔都看起來像一個人寫的,增加 可讀性,減少項
8、目組中因為換人而帶來的損失。 3.1 Package 的命名的命名 Package 的名字應(yīng)該都是由一個小寫單詞組成。示例:unipost.trans 3.2 Class 的命名的命名 Class 的名字每個單詞必須由大寫字母開頭而其他字母都小寫的單詞組成。 示例:FileMng 3.3 Class 成員的命名成員的命名 變量、方法、屬性:大小寫混排的單詞組成,首字母小寫 示例: functionName、countNum、size 3.4 Static Final 變量的命名變量的命名 Static Final 常量:大寫單詞組成,單詞之間使用“_”連接 示例: MAX_INDEX 3.5
9、前后臺變量名稱前后臺變量名稱 前臺變量 fg_變量名 后臺變量 bg_變量名 3.6 參數(shù)的命名參數(shù)的命名 參數(shù)的名字必須和變量的命名規(guī)范一致。 3.7 數(shù)組的命名數(shù)組的命名 數(shù)組應(yīng)該總是用下面的方式來命名: byte buffer; 而不是: byte buffer; 3.8 方法的參數(shù)方法的參數(shù) 使用有意義的參數(shù)命名,如果可能的話,使用和要賦值的屬性一樣的名字: setCounter(int size) this.size = size; 3.9 縮寫縮寫 某些通用的縮寫可以使用,如: temp 可縮寫為 tmp ; message 可縮寫為 msg ; 3.10 標識符命名中應(yīng)注意的問題
10、標識符命名中應(yīng)注意的問題 3.10.1 除局部循環(huán)變量外變量名禁止取單個字符除局部循環(huán)變量外變量名禁止取單個字符 對于變量命名,禁止取單個字符(如 i、j、k.) ,建議除了要有具體含義外, 還能表明其變量類型、數(shù)據(jù)類型等,但 i、j、k 作局部循環(huán)變量是允許的。 說明:變量,尤其是局部變量,如果用單個字符表示,很容易敲錯(如 i 寫成 j) ,而編譯時又檢查不出來,有可能為了這個小小的錯誤而花費大量 的查錯時間。 3.10.2 不用數(shù)字定義名字不用數(shù)字定義名字 除非必要,不要用數(shù)字或較奇怪的字符來定義標識符。 示例:如下命名,使人產(chǎn)生疑惑。 void set_sls00( BYTE sls
11、); 應(yīng)改為有意義的單詞命名 void setUdtMsgSls( BYTE sls ); 3.10.3 用正確的反義詞組命名用正確的反義詞組命名 用正確的反義詞組命名具有互斥意義的變量或相反動作的函數(shù)等。 說明:下面是一些在軟件中常用的反義詞組。 add / remove begin / endcreate / destroy insert / deletefirst / last get / set increment / decrementput / getadd / delete lock / unlock open / closemin / max old / newstart /
12、stopnext / previous source / targetshow / hidesend / receive source / destinationcut / pasteup / down 示例: int minSum; int maxSum; int addUser( BYTE *userName ); int deleteUser( BYTE *userName ); 3.10.4 避免使用避免使用 應(yīng)避免使用_EXAMPLE_TEST_之類以下劃線開始和結(jié)尾的定義。 4 樣式樣式 4.1 Java 文件樣式文件樣式 所有的 Java(*.java) 文件都必須遵守如下的樣式
13、規(guī)則 4.1.1 版權(quán)信息版權(quán)信息 版權(quán)信息必須在 java 文件的開頭,示例: /* * - * Copyright (c) 2003, 國家郵政局 * All rights reserved. * * FileName:filename.java * Description:簡要描述本文件的內(nèi)容 * History: * Date Author Desc * - */ 4.1.2 Package/Imports package 行要在 import 行之前,import 中標準的包名要在本地的包名之 前,而且按照字母順序排列。如果 import 行中包含了同一個包中的不同 子目錄,則建議用
14、 * 來處理。 package com.nantian; import java.io.*; import java.util.Observable; import translator; 這里 java.io.* 使用來代替 InputStream and OutputStream 的。 4.2 Class 的樣式的樣式 4.2.1 Class 的定義的定義 包含了在不同的行的 extends 和 implements public class CounterSet extends Observable implements Cloneable 4.2.2 Class Fields 類的成員
15、變量: /* * Packet counters */ protected int packets; public 的成員變量一定要有注釋而且必須生成文檔(JavaDoc) 。 proceted、private 和 package 定義的成員變量如果名字含義明確的話,可 以沒有注釋。 4.2.3 構(gòu)造函數(shù)構(gòu)造函數(shù) 構(gòu)造函數(shù),它應(yīng)該用遞增的方式寫(比如:參數(shù)多的寫在后面) 。示例: public CounterSet(int size) this.size = size; public CounterSet(int size,String name) this.size = size; this
16、.name = name; 4.2.4 克隆方法克隆方法 如果這個類是可以被克隆的: 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(); 4.2.5
17、 類成員變量和方法的編寫順序類成員變量和方法的編寫順序 建議編寫順序為: public protected private final static transient 4.2.6 main 方法方法 如果 main(String) 方法已經(jīng)定義了, 那么它應(yīng)該寫在類的底部。 4.3 代碼樣式代碼樣式 代碼應(yīng)該用 unix 的格式,而不是 windows 的(比如:回車變成回車+換 行) 5 注釋注釋 5.1 一般情況下一般情況下 源程序有效注釋量必須在 20以上。 說明:注釋的原則是有助于對程序的閱讀理解,在該加的地方都加了,注 釋不宜太多也不能太少,注釋語言必須準確、易懂、簡潔。 5.2
18、常規(guī)注釋標記說明常規(guī)注釋標記說明 注釋起始為“/*/” ,注釋文檔的第一條為總結(jié)性語句,可在注釋文檔中 使用 HTML 的標簽語句,但要杜絕使用“HL” “HR”標簽。注釋全部采用 中文,并依據(jù)以下標記規(guī)范進行書寫。 5.2.1 since since 文字:可生成一個“自從”條目,通過其中的“文字” ,可說明一 項特性是“自從”哪個版本開始引入的。 5.2.2 deprecated deprecated 文字:可增加一條注釋,指定特定的類、方法或變量不應(yīng)繼 續(xù)使用,在這里,deprecated 是“不贊成” , “不推薦”之意。利用其中的 “文字” ,可向用戶推薦另一種方法來達到同樣的目的。
19、如: /* . deprecated 使用 setVisible */ 5.2.3 see see 鏈接:增加一個超鏈接。 若指向類、方法或變量名若指向類、方法或變量名 可在see 后直接寫上類、方法或變量名,書寫方法時可省略包、類名,特 性會默認為當前包或類。注意:類、方法、變量名間使用“#”分隔。如: /* . see packeg.class#readInt(String) */ 若指向一個具體的若指向一個具體的 URL,則直接書寫,則直接書寫 HTML 標簽錨。如:標簽錨。如: /* . see The Java Site (HTML 標簽的書寫,參見關(guān)于
20、HTML 的書籍) */ 若指向到若指向到“seealso(參考)(參考) ”小節(jié)顯示出來,使用小節(jié)顯示出來,使用“” (雙引號)(雙引號) 。如:。如: /* . see “java1.2 volume2” 注:可書寫多個標記,但必須放在一起,以下全部一樣。 */ 5.2.4 link link:可在注釋中建立特殊的超鏈接,令其指向其他類或方法,標記規(guī)則 同see。 5.3 類和接口注釋說明類和接口注釋說明 類注釋必須置于任何一個 import 語句后面,同時位于 class 定義的前面。 author 名字:建立一個“作者”條目。 version 文字:建立一個“版本”條目。
21、 5.4 方法注釋說明方法注釋說明 緊靠在每條方法的前面,必須有一個它所描述的那個方法的簽名。 param 變量描述:給“parameters” (參數(shù))小節(jié)增添一個條目。 return 描述:增添一個“returns” (返回值)小節(jié)。 throws 類描述:為方法的“throws” (產(chǎn)生違例)小節(jié)增添一個條目。 如: /* 將一個雙精度數(shù)格式化成一個字串 param x 要格式化的數(shù)字 return 格式化成的字串 throws 如參數(shù)錯誤,產(chǎn)生 IllegalArgumentException(非法參數(shù)違例) */. 6 書寫格式規(guī)范書寫格式規(guī)范 6.1 代碼編寫規(guī)范代碼編寫規(guī)范 6.
22、1.1 縮進縮進 縮進應(yīng)該是每行 4 個空格,在使用不同的源代碼管理工具時 Tab 字符將因 為用戶設(shè)置的不同而擴展為不同的寬度. 如果你使用 UltrEdit 作為你的 Java 源代碼編輯器的話,你可以通過如下 操作來禁止保存 Tab 字符, 方法是通過 UltrEdit 中先設(shè)定 Tab 使用的長度 室 4 個空格,然后用 Format|Tabs to Spaces 菜單將 Tab 轉(zhuǎn)換為空格。 case 語句下的情況處理語句也要遵從語句縮進要求。 6.1.2 頁寬頁寬 頁寬應(yīng)該設(shè)置為 80 字符. 源代碼一般不會超過這個寬度, 并導(dǎo)致無法完整 顯示, 但這一設(shè)置也可以靈活調(diào)整. 在任何
23、情況下, 超長的語句應(yīng)該在一個 逗號或者一個操作符后折行. 一條語句折行后, 應(yīng)該比原來的語句再縮進 4 個字符。 示例: permCountMsg.Head.Len = NO7_TO_STAT_PERM_COUNT_LEN + STAT_SIZE_PER_FRAM * sizeof( _UL ); actTaskTableFrameID * STAT_TASK_CHECK_NUMBER + index.Occupied = statPoleindex.occupied; 6.1.3 空行空行 相對獨立的程序塊之間、變量說明之后必須加空行。 示例:如下例子不符合規(guī)范。 if ( !validN
24、ill(nill) . / program code repssnInd = sendDataindex.repssn_index; repssnNill = sendDataindex.nill; 應(yīng)如下書寫 if (!validNill(nill) . / program code repssnInd = sendDataindex.repssn_index; repssnNill = sendDataindex.nill; 6.1.4 空格的使用空格的使用 在兩個以上的關(guān)鍵字、變量、常量進行對等操作時,它們之間的操作符之 前、之后或者前后要加空格;進行非對等操作時,如果是關(guān)系密切的立即
25、操作符(如) ,后不應(yīng)加空格。 說明:采用這種松散方式編寫代碼的目的是使代碼更加清晰。 左括號和后一個字符之間不應(yīng)該出現(xiàn)空格, 同樣, 右括號和前一個字符之間 也不應(yīng)該出現(xiàn)空格. 下面的例子說明括號和空格的錯誤及正確使用: CallProc( AParameter ); / 錯誤 CallProc(AParameter); / 正確 6.1.5 的用法的用法 程序塊的分界符(如大括號和 )應(yīng)各獨占一行并且位于同一列, 同時與引用它們的語句左對齊。在函數(shù)體的開始、類的定義、結(jié)構(gòu)的定義、 枚舉的定義以及 if、for、do、while、switch、case 語句中的程序都要采用如 上的縮進方式。
26、 示例:如下例子不符合規(guī)范。 for (.) . / program code if (.) . / program code void exampleFunction( void ) . / program code 應(yīng)如下書寫。 for (.) . / program code if (.) . / program code void exampleFunction( void ) . / program code 6.1.6 if 等語句寫法等語句寫法 if、for、do、while、case、switch、default、try、catch 等語句自占一行, “”必須回行編寫,且 if
27、、for、do、while 等語句的執(zhí)行語句部分必須用括 起回行編寫,若有執(zhí)行語句只有一條,可缺省。 示例:如下例子不符合規(guī)范。 if (pUserCR = NULL) return; 應(yīng)如下書寫: if (pUserCR = NULL) return; 6.1.7 循環(huán)、判斷等語句循環(huán)、判斷等語句 循環(huán)、判斷等語句中若有較長的表達式或語句,則要進行適當?shù)膭澐?,長 表達式要在低優(yōu)先級操作符處劃分新行,操作符放在新行之首。 示例: if (taskNo maxActTaskNumber) (i bufferKeywordWordIndex.word_length) i+, j+) . / pro
28、gram code for (i = 0, j = 0; (i firstWordLength) i+, j+) . / program code 6.1.8 參數(shù)劃分參數(shù)劃分 若方法中的參數(shù)較長,則要進行適當?shù)膭澐帧?示例: n7StatStrCompare(BYTE *) n7StatFlashActDuration( statItem, frameID *STAT_TASK_CHECK_NUMBER + index, statObject ); 6.1.9 一行只寫一條語句一行只寫一條語句 不允許把多個短語句寫在一行中,即一行只寫一條語句。 示例:如下例子不符合規(guī)范。 rect.leng
29、th = 0; rect.width = 0; 應(yīng)如下書寫 rect.length = 0; rect.width = 0; 6.2 變量編寫規(guī)范變量編寫規(guī)范 6.2.1 公共變量公共變量 去掉沒必要的公共變量。去掉沒必要的公共變量。 說明:公共變量是增大模塊間耦合的原因之一,故應(yīng)減少沒必要的公共變 量以降低模塊間的耦合度。 仔細定義并明確公共變量的含義、作用、取值范圍及公共變仔細定義并明確公共變量的含義、作用、取值范圍及公共變 量間的關(guān)系。量間的關(guān)系。 說明:在對變量聲明的同時,應(yīng)對其含義、作用及取值范圍進行注釋說明, 同時若有必要還應(yīng)說明與其它變量的關(guān)系。 6.
30、2.1.3當向公共變量傳遞數(shù)據(jù)時,要十分小心,防止賦與不合理的當向公共變量傳遞數(shù)據(jù)時,要十分小心,防止賦與不合理的 值或越界等現(xiàn)象發(fā)生。值或越界等現(xiàn)象發(fā)生。 說明:對公共變量賦值時,若有必要應(yīng)進行合法性檢查,以提高代碼的可 靠性、穩(wěn)定性。 6.2.2 局部變量局部變量 防止局部變量與公共變量同名。防止局部變量與公共變量同名。 說明:若使用了較好的命名規(guī)則,那么此問題可自動消除。 6.3 程序編寫規(guī)范程序編寫規(guī)范 6.3.1 exit() exit 除了在 main 中可以被調(diào)用外,其他的地方不應(yīng)該調(diào)用。因為這樣做 不給任何代碼機會來截獲退出。一個類似后臺服務(wù)的程序不應(yīng)該因為某一
31、個庫模塊決定了要退出就退出。 6.3.2 異常異常 申明的錯誤應(yīng)該拋出一個 RuntimeException 或者派生的異常。申明的錯誤 主要指前提條件違例、處理流程違例的情況。對于功能性的分支建議采用 返回值的方式。 異常建議根據(jù)模塊結(jié)構(gòu),采用逐級處理的方式,并打印(或者記錄在日志 中) 。同一模塊層次的異常,按功能可由某一模塊集中處理。 6.3.3 垃圾收集垃圾收集 JAVA 使用成熟的后臺垃圾收集技術(shù)來代替引用計數(shù)。但是這樣會導(dǎo)致一個 問題:你必須在使用完對象的實例以后進行清場工作(將對象置為 NULL 后,引用計數(shù)自動1) 。 6.3.4 final 類類 絕對不要因為性能的原因?qū)㈩惗?/p>
32、義為 final 的(除非程序的框架要求) 如果一個類還沒有準備好被繼承,最好在注釋中注明,而不要將它定義為 final 的。這是因為沒有人可以保證會不會由于什么原因需要繼承。 6.3.5 訪問類的成員變量訪問類的成員變量 大部分的類成員變量應(yīng)該定義為 private 的來防止繼承類使用他們。 7 編程技巧編程技巧 7.1 一般性原則一般性原則 7.1.1 檢查所有參數(shù)輸入的有效性。檢查所有參數(shù)輸入的有效性。 7.1.2 檢查參數(shù)輸入檢查參數(shù)輸入 檢查所有非參數(shù)輸入的有效性,如數(shù)據(jù)文件、公共變量等。 說明:輸入主要有兩種:一種是參數(shù)輸入;另一種是全局變量、數(shù)據(jù)文件 的輸入,即非參數(shù)輸入。在使用
33、輸入之前,應(yīng)進行必要的檢查。 7.1.3 類名應(yīng)準確描述類的功能。類名應(yīng)準確描述類的功能。 7.1.4 避免強制返回值類型避免強制返回值類型 除非必要,最好不要把與返回值類型不同的變量,以編譯系統(tǒng)默認的轉(zhuǎn)換 方式或強制的轉(zhuǎn)換方式作為返回值返回。 7.1.5 讓調(diào)用點顯得易懂、容易理解。讓調(diào)用點顯得易懂、容易理解。 7.1.6 減少數(shù)據(jù)類型轉(zhuǎn)換減少數(shù)據(jù)類型轉(zhuǎn)換 在填寫參數(shù)時,應(yīng)盡量減少沒有必要的默認數(shù)據(jù)類型轉(zhuǎn)換或強制數(shù)據(jù)類型 轉(zhuǎn)換。 說明:因為數(shù)據(jù)類型轉(zhuǎn)換或多或少存在危險。 7.1.7 防止程序中的垃圾代碼。防止程序中的垃圾代碼。 說明:程序中的垃圾代碼不僅占用額外的空間,而且還常常影響程序的功
34、 能與性能,很可能給程序的測試、維護等造成不必要的麻煩。 7.1.8 減少遞歸調(diào)用。減少遞歸調(diào)用。 說明:遞歸調(diào)用影響程序的可理解性;遞歸調(diào)用一般都占用較多的系統(tǒng)資 源(如??臻g) ;遞歸調(diào)用對程序的測試有一定影響。故除非為某些算法或 功能的實現(xiàn)方便,應(yīng)減少沒必要的遞歸調(diào)用。 7.1.9 使用數(shù)據(jù)流圖使用數(shù)據(jù)流圖 仔細分析模塊的功能及性能需求,并進一步細分,同時若有必要畫出有關(guān) 數(shù)據(jù)流圖。 說明:根據(jù)模塊的功能圖或/及數(shù)據(jù)流圖映射出結(jié)構(gòu)是常用方法之一。 7.1.10 避免使用避免使用 BOOL 參數(shù)。參數(shù)。 說明:原因有二,其一是 BOOL 參數(shù)值無意義,TURE/FALSE 的含義是非 常模
35、糊的,在調(diào)用時很難知道該參數(shù)到底傳達的是什么意思;其二是 BOOL 參數(shù)值不利于擴充。還有 NULL 也是一個無意義的單詞。 7.2 開發(fā)過程中的技巧開發(fā)過程中的技巧 7.2.1 byte 數(shù)組轉(zhuǎn)換到數(shù)組轉(zhuǎn)換到 characters 為了將 byte 數(shù)組轉(zhuǎn)換到 characters,你可以這么做: Hello world!.getBytes(); 7.2.2 Utility 類類 Utility 類(僅僅提供方法的類)應(yīng)該被申明為抽象的來防止被繼承或被初 始化。 7.2.3 初始化數(shù)組初始化數(shù)組 下面的代碼是一種很好的初始化數(shù)組的方法: objectArguments = new Objec
36、t arguments ; 7.2.4 枚舉類型枚舉類型 JAVA 對枚舉的支持不好,但是下面的代碼是一種很有用的模板: class Colour public static final Colour BLACK = new Colour(0, 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
37、 xFF); public static final Colour WHITE = new Colour(0 xFF, 0 xFF, 0 xFF); 這種技術(shù)實現(xiàn)了 RED, GREEN, BLUE 等可以象其他語言的枚舉類型一樣 使用的常量。 他們可以用 = 操作符來比較。 但是這樣使用有一個缺陷:如果一個用戶用這樣的方法來創(chuàng)建顏色 BLACK new Colour(0,0,0) ,那么這就是另外一個對象。=操作符就會產(chǎn)生錯誤。 她的 equal() 方法仍然有效。由于這個原因,這個技術(shù)的缺陷最好注明在 文檔中,或者只在自己的包中使用。 7.2.5 Swing 避免使用 AWT 組件 混合使
38、用 AWT 和 Swing 組件 如果要將 AWT 組件和 Swing 組件混合起來使用的話,請小心使用。實 際上,盡量不要將他們混合起來使用。 滾動的 AWT 組件 AWT 組件絕對不要用 JscrollPane 類來實現(xiàn)滾動。滾動 AWT 組件的時候 一定要用 AWT ScrollPane 組件來實現(xiàn)。 避免在 InternalFrame 組件中使用 AWT 組件 盡量不要這么做,要不然會出現(xiàn)不可預(yù)料的后果。 7.2.6 Z-Order 問題問題 AWT 組件總是顯示在 Swing 組件之上。當使用包含 AWT 組件的 POP- UP 菜單的時候要小心,盡量不要這樣使用。 7.2.7 不必
39、要的對象構(gòu)造不必要的對象構(gòu)造 不要在循環(huán)中構(gòu)造和釋放對象 7.2.8 synchronized 關(guān)鍵字關(guān)鍵字 避免太多的使用 synchronized 關(guān)鍵字 避免不必要的使用關(guān)鍵字 synchronized,應(yīng)該在必要的時候再使用它,這是 一個避免死鎖的好方法。 Borland Jbulider 不喜歡 synchronized 這個關(guān)鍵字,如果你的斷點設(shè)在這些 關(guān)鍵字的作用域內(nèi)的話,調(diào)試的時候你會發(fā)現(xiàn)的斷點會到處亂跳,讓你不 知所措。除非必須,盡量不要使用。 7.3 程序效率程序效率 7.3.1 注意代碼的效率注意代碼的效率 編程時要經(jīng)常注意代碼的效率。 說明:代碼效率分為全局效率、局部效
40、率、時間效率及空間效率。全局效 率是站在整個系統(tǒng)的角度上的系統(tǒng)效率;局部效率是站在模塊或函數(shù)角度 上的效率;時間效率是程序處理輸入任務(wù)所需的時間長短;空間效率是程 序所需內(nèi)存空間,如機器代碼空間大小、數(shù)據(jù)空間大小、??臻g大小等。 7.3.2 提高代碼效率提高代碼效率 在保證系統(tǒng)的正確性、穩(wěn)定性、可讀性及可測性的前提下,提高代碼效率。 說明:不能一味地追求代碼效率,而對軟件的正確性、穩(wěn)定性、可讀性及 可測性造成影響。 7.3.3 局部效率應(yīng)為全局效率服務(wù)局部效率應(yīng)為全局效率服務(wù) 局部效率應(yīng)為全局效率服務(wù),不能因為提高局部效率而對全局效率造成影 響。 7.3.4 循環(huán)體內(nèi)工作量最小化。循環(huán)體內(nèi)工作
41、量最小化。 說明:應(yīng)仔細考慮循環(huán)體內(nèi)的語句是否可以放在循環(huán)體之外,使循環(huán)體內(nèi) 工作量最小,從而提高程序的時間效率。 示例:如下代碼效率不高。 for (i = 0; i MAX_ADD_NUMBER; i+) sum += i; BackSum = sum; /* backup sum */ 語句“BackSum = sum;”完全可以放在 for 語句之后,如下。 for (ind = 0; ind MAX_ADD_NUMBER; ind+) sum += i; BackSum = sum; /* backup sum */ 7.3.5 仔細分析有關(guān)算法,并進行優(yōu)化。仔細分析有關(guān)算法,并進行
42、優(yōu)化。 7.3.6 改進輸入方式改進輸入方式 仔細考查、分析系統(tǒng)及模塊處理輸入(如事務(wù)、消息等)的方式,并加以 改進。 7.3.7 提高調(diào)用不頻繁的代碼效率要慎重提高調(diào)用不頻繁的代碼效率要慎重 不應(yīng)花過多的時間拼命地提高調(diào)用不很頻繁的代碼效率。 說明:對代碼優(yōu)化可提高效率,但若考慮不周很有可能引起嚴重后果。 7.3.8 提高空間效率提高空間效率 在保證程序質(zhì)量的前提下,通過壓縮代碼量、去掉不必要代碼以及減少不 必要的局部和全局變量,來提高空間效率。 說明:這種方式對提高空間效率可起到一定作用,但往往不能解決根本問 題。 7.3.9 循環(huán)的位置循環(huán)的位置 在多重循環(huán)中,應(yīng)將最忙的循環(huán)放在最內(nèi)層。 說明:減少 CPU 切入循環(huán)層的次數(shù)。 示例:如下代碼效率不高。 for (row = 0; row 100; row+) for (col = 0; col
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 歡樂周末團隊歷奇小組(計劃書)
- 項目管理制度 (二)
- 襄陽棗陽市招聘事業(yè)單位工作人員考試試題及答案
- 2025年新型分子篩系列產(chǎn)品項目合作計劃書
- 2025年玻璃、陶瓷制品生產(chǎn)專用設(shè)備合作協(xié)議書
- 2025年郵政專用機械及器材項目建議書
- 2025年高純度丙烯酰胺及聚丙烯酰胺項目建議書
- 學(xué)習(xí)動力與教育環(huán)境的互動關(guān)系
- 教育創(chuàng)新論壇國際在線教育平臺的挑戰(zhàn)與機遇
- 教育國際合作打破教育壁壘的實踐研究
- 霍爾果斯人才集團招聘筆試沖刺題2025
- 2024年中級咖啡師技能認證考試復(fù)習(xí)題庫(含答案)
- 新課標(水平三)體育與健康《籃球》大單元教學(xué)計劃及配套教案(18課時)
- GB/T 44910-2024琥珀分級
- 應(yīng)急文化守護萬家
- 臨時施工出入口交通疏導(dǎo)方案
- 醫(yī)療設(shè)備器材供貨安裝、調(diào)試及售后服務(wù)方案
- 汽車內(nèi)飾件及材料氣味評價標準解析
- 大學(xué)生創(chuàng)新創(chuàng)業(yè)基礎(chǔ)(創(chuàng)新創(chuàng)業(yè)課程)完整全套教學(xué)課件
- 部編版語文三年級上冊第四單元教材解讀大單元集體備課
- 《論語十二章》挖空練習(xí)及答案
評論
0/150
提交評論