版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 DKBA華為技術(shù)有限公司企業(yè)技術(shù)規(guī)范DKBAXXXX-2001.12代替(DKBA-003) Java語言編程規(guī)范2001-12-XX發(fā)布 2001-12-XX實(shí)施華 為 技 術(shù) 有 限 公 司發(fā)布目 次前言 .31 范圍112 規(guī)范性引用文件113 術(shù)語和定義114 排版規(guī)范124.1 規(guī)則121.*程序塊要采用縮進(jìn)風(fēng)格編寫,縮進(jìn)的空格數(shù)為4個(gè)。122.*分界符(如大括號(hào)和)應(yīng)各獨(dú)占一行并且位于同一列,同時(shí)與引用它們的語句左對(duì)齊。在函數(shù)體的開始、類和接口的定義、以及if、for、do、while、switch、case語句中的程序都要采用如上的縮進(jìn)方式。123.*較長的語句、表達(dá)式或參數(shù)(
2、80字符)要分成多行書寫,長表達(dá)式要在低優(yōu)先級(jí)操作符處劃分新行,操作符放在新行之首,劃分出的新行要進(jìn)行適當(dāng)?shù)目s進(jìn),使排版整齊,語句可讀。 134.*不允許把多個(gè)短語句寫在一行中,即一行只寫一條語句135.*if, for, do, while, case, switch, default 等語句自占一行,且if, for, do, while等語句的執(zhí)行語句無論多少都要加括號(hào)。136.*相對(duì)獨(dú)立的程序塊之間、變量說明之后必須加空行。137.*對(duì)齊只使用空格鍵,不使用TAB鍵。148.*在兩個(gè)以上的關(guān)鍵字、變量、常量進(jìn)行對(duì)等操作時(shí),它們之間的操作符之前、之后或者前后要加空格;進(jìn)行非對(duì)等操作時(shí),如
3、果是關(guān)系密切的立即操作符(如.),后不應(yīng)加空格。144.2 建議151.類屬性和類方法不要交叉放置,不同存取范圍的屬性或者方法也盡量不要交叉放置。155 注釋規(guī)范165.1 規(guī)則161.一般情況下,源程序有效注釋量必須在30以上。162.包的注釋:包的注釋寫入一個(gè)名為 package.html 的HTML格式的說明文件放入當(dāng)前路徑。163.包的注釋內(nèi)容:簡述本包的作用、詳細(xì)描述本包的內(nèi)容、產(chǎn)品模塊名稱和版本、公司版權(quán)。164.文件注釋:文件注釋寫入文件頭部,包名之前的位置。165.文件注釋內(nèi)容:版權(quán)說明、描述信息、生成日期、修改歷史。176.類和接口的注釋:該注釋放在 package 關(guān)鍵字之
4、后,class 或者 interface 關(guān)鍵字之前。187.類和接口的注釋內(nèi)容:類的注釋主要是一句話功能簡述、功能詳細(xì)描述,188.類屬性、公有和保護(hù)方法注釋:寫在類屬性、公有和保護(hù)方法上面。199. 成員變量注釋內(nèi)容:成員變量的意義、目的、功能,可能被用到的地方。1910.公有和保護(hù)方法注釋內(nèi)容:列出方法的一句話功能簡述、功能詳細(xì)描述、輸入?yún)?shù)、輸出參數(shù)、返回值、違例等。1911.對(duì)于方法內(nèi)部用throw語句拋出的異常,必須在方法的注釋中標(biāo)明,對(duì)于所調(diào)用的其他方法所拋出的異常,選擇主要的在注釋中說明。 對(duì)于非RuntimeException,即throws子句聲明會(huì)拋出的異常,必須在方法的
5、注釋中標(biāo)明。2012.*注釋應(yīng)與其描述的代碼相近,對(duì)代碼的注釋應(yīng)放在其上方或右方(對(duì)單條語句的注釋)相鄰位置,不可放在下面,如放于上方則需與其上面的代碼用空行隔開。2013.*注釋與所描述內(nèi)容進(jìn)行同樣的縮排。2014.*將注釋與其上面的代碼用空行隔開。2115.*對(duì)變量的定義和分支語句(條件分支、循環(huán)語句等)必須編寫注釋。2116.*對(duì)于switch語句下的case語句,如果因?yàn)樘厥馇闆r需要處理完一個(gè)case后進(jìn)入下一個(gè)case處理,必須在該case語句處理完、下一個(gè)case語句前加上明確的注釋。2117.*邊寫代碼邊注釋,修改代碼同時(shí)修改相應(yīng)的注釋,以保證注釋與代碼的一致性。不再有用的注釋要
6、刪除。2118.*注釋的內(nèi)容要清楚、明了,含義準(zhǔn)確,防止注釋二義性。2119.*避免在注釋中使用縮寫,特別是不常用縮寫。215.1 建議211.*避免在一行代碼或表達(dá)式的中間插入注釋。222.*通過對(duì)函數(shù)或過程、變量、結(jié)構(gòu)等正確的命名以及合理地組織代碼的結(jié)構(gòu),使代碼成為自注釋的。223.*在代碼的功能、意圖層次上進(jìn)行注釋,提供有用、額外的信息。224.*在程序塊的結(jié)束行右方加注釋標(biāo)記,以表明某程序塊的結(jié)束。225.*注釋應(yīng)考慮程序易讀及外觀排版的因素,使用的語言若是中、英兼有的,建議多使用中文,除非能用非常流利準(zhǔn)確的英文表達(dá)。226.方法內(nèi)的單行注釋使用 /。227.注釋盡量使用中文注釋和中文
7、標(biāo)點(diǎn)。方法和類描述的第一句話盡量使用簡潔明了的話概括一下功能,然后加以句號(hào)。接下來的部分可以詳細(xì)描述。238.順序?qū)崿F(xiàn)流程的說明使用1、2、3、4在每個(gè)實(shí)現(xiàn)步驟部分的代碼前面進(jìn)行注釋。239. 一些復(fù)雜的代碼需要說明。236 命名規(guī)范246.1 規(guī)則241.包名采用域后綴倒置的加上自定義的包名,采用小寫字母。在部門內(nèi)部應(yīng)該規(guī)劃好包名的范圍,防止產(chǎn)生沖突。部門內(nèi)部產(chǎn)品使用部門的名稱加上模塊名稱。產(chǎn)品線的產(chǎn)品使用產(chǎn)品的名稱加上模塊的名稱。242.類名和接口使用類意義完整的英文描述,每個(gè)英文單詞的首字母使用大寫、其余字母使用小寫的大小寫混合法。243.方法名使用類意義完整的英文描述:第一個(gè)單詞的字母
8、使用小寫、剩余單詞首字母大寫其余字母小寫的大小寫混合法。244.方法中,存取屬性的方法采用setter 和 getter方法,動(dòng)作方法采用動(dòng)詞和動(dòng)賓結(jié)構(gòu)。245.屬性名使用意義完整的英文描述:第一個(gè)單詞的字母使用小寫、剩余單詞首字母大寫其余字母小寫的大小寫混合法。屬性名不能與方法名相同。256.常量名使用全大寫的英文描述,英文單詞之間用下劃線分隔開,并且使用 final static 修飾。257.屬性名可以和公有方法參數(shù)相同,不能和局部變量相同,引用非靜態(tài)成員變量時(shí)使用 this 引用,引用靜態(tài)成員變量時(shí)使用類名引用。256.2 建議251.常用組件類的命名以組件名加上組件類型名結(jié)尾。252
9、.如果函數(shù)名超過15 個(gè)字母,可采用以去掉元音字母的方法或者以行業(yè)內(nèi)約定俗成的縮寫方式縮寫函數(shù)名。263.準(zhǔn)確地確定成員函數(shù)的存取控制符號(hào),不是必須使用 public 屬性的,請(qǐng)使用 protected,不是必須使用 protected, 請(qǐng)使用 private。264.含有集合意義的屬性命名,盡量包含其復(fù)數(shù)的意義。267 編碼規(guī)范277.1 規(guī)則271.*明確方法功能,精確(而不是近似)地實(shí)現(xiàn)方法設(shè)計(jì)。一個(gè)函數(shù)僅完成一件功能,即使簡單功能也應(yīng)該編寫方法實(shí)現(xiàn)。 272.應(yīng)明確規(guī)定對(duì)接口方法參數(shù)的合法性檢查應(yīng)由方法的調(diào)用者負(fù)責(zé)還是由接口方法本身負(fù)責(zé),缺省是由方法調(diào)用者負(fù)責(zé)。273.明確類的功能,
10、精確(而不是近似)地實(shí)現(xiàn)類的設(shè)計(jì)。一個(gè)類僅實(shí)現(xiàn)一組相近的功能。274.所有的數(shù)據(jù)類必須重載toString() 方法,返回該類有意義的內(nèi)容。275.數(shù)據(jù)庫操作、IO操作等需要使用結(jié)束close()的對(duì)象必須在try -catch-finally 的finally中close()。276.異常捕獲后,如果不對(duì)該異常進(jìn)行處理,則應(yīng)該紀(jì)錄日志或者ex.printStackTrace() 。287.自己拋出的異常必須要填寫詳細(xì)的描述信息。288.運(yùn)行期異常使用RuntimeException的子類來表示,不用在可能拋出異常的方法聲明上加throws子句。非運(yùn)行期異常是從Exception繼承而來的,必
11、須在方法聲明上加throws子句。299.在程序中使用異常處理還是使用錯(cuò)誤返回碼處理,根據(jù)是否有利于程序結(jié)構(gòu)來確定,并且異常和錯(cuò)誤碼不應(yīng)該混合使用,推薦使用異常。2910.*注意運(yùn)算符的優(yōu)先級(jí),并用括號(hào)明確表達(dá)式的操作順序,避免使用默認(rèn)優(yōu)先級(jí)。2911.*避免使用不易理解的數(shù)字,用有意義的標(biāo)識(shí)來替代。涉及物理狀態(tài)或者含有物理意義的常量,不應(yīng)直接使用數(shù)字,必須用有意義的靜態(tài)變量來代替。2912.數(shù)組聲明的時(shí)候使用 int index ,而不要使用 int index 。3013.調(diào)試代碼的時(shí)候,不要使用 System.out 和 System.err 進(jìn)行打印,應(yīng)該使用一個(gè)包含統(tǒng)一開關(guān)的測試類進(jìn)
12、行統(tǒng)一打印。3014.用調(diào)測開關(guān)來切換軟件的DEBUG版和正式版,而不要同時(shí)存在正式版本和DEBUG版本的不同源文件,以減少維護(hù)的難度。307.2建議301.記錄異常不要保存exception.getMessage(),而要記錄exception.toString()。302.一個(gè)方法不應(yīng)拋出太多類型的異常。313.異常捕獲盡量不要直接 catch (Exception ex),應(yīng)該把異常細(xì)分處理。314.*如果多段代碼重復(fù)做同一件事情,那么在方法的劃分上可能存在問題。315.對(duì)于創(chuàng)建的主要的類,最好置入main()函數(shù),包含用于測試那個(gè)類的代碼 。316.集合中的數(shù)據(jù)如果不使用了應(yīng)該及時(shí)釋放
13、,尤其是可重復(fù)使用的集合。317.*源程序中關(guān)系較為緊密的代碼應(yīng)盡可能相鄰。318.*不要使用難懂的技巧性很高的語句,除非很有必要時(shí)。318 JTEST規(guī)范328.1 規(guī)則(1-2 級(jí))321.在switch 中每個(gè) case 語句都應(yīng)該包含 break 或者 return 。322.不要使用空的for 、if 、while 語句。323.在運(yùn)算中不要減小數(shù)據(jù)的精度。324.switch 語句中的 case 關(guān)鍵字要和后面的常量保持一個(gè)空格,switch 語句中不要定義case 之外的無用標(biāo)簽。325.不要在if 語句中使用等號(hào)= 進(jìn)行賦值操作。326.靜態(tài)成員或者方法使用類名訪問,不使用句柄
14、訪問。327.方法重載的時(shí)候,一定要注意方法名相同,避免類中使用兩個(gè)非常相似的方法名。328.不要在ComponentLponentResized() 方法中調(diào)用 serResize() 方法。329.不要覆蓋父類的靜態(tài)方法和私有方法。3210.不要覆蓋父類的屬性。3211.不要使用兩級(jí)以上的內(nèi)部類。3212.把內(nèi)部類定義成私有類。3213.去掉接口中多余的定義(不使用 public, abstract, static, final 等,這是接口中默認(rèn)的)。3214.不要定義不會(huì)被用到的局部變量、類私有屬性、類私有方法和方法參數(shù)。3215.顯式初始化所有的靜態(tài)屬性。321
15、6.不要使用 System.getenv() 方法。3217.不要硬編碼 n和r作為換行符號(hào)。3218.不要直接使用 java.awt.peer.* 里面的接口。3219.使用 System.arraycopy() ,不使用循環(huán)來復(fù)制數(shù)組。3220.避免不必要的 instanceof 比較運(yùn)算和類造型運(yùn)算。3221.不要在 finalize() 方法中刪除監(jiān)聽器(Listeners)。3222.在 finalize() 方法中一定要調(diào)用 super.finalize() 方法。3223.在 finalize() 方法中的 finally 中調(diào)用 super.finalize() 方法。3224
16、.進(jìn)行字符轉(zhuǎn)換的時(shí)候應(yīng)該盡可能的較少臨時(shí)變量。3225.使用ObjectStream 的方法后,調(diào)用reset() ,釋放對(duì)象。3226.線程同步中,在循環(huán)里面使用條件測試(使用 while(isWait) wait() 代替 if(isWait) wait())。3227.不掉用 Thread 類的 resume(), suspend(), stop() 方法。3228.減小單個(gè)方法的復(fù)雜度,使用的 if, while, for, switch 語句要在10個(gè)以內(nèi)。3229.在Servlets中,重用JDBC連接的數(shù)據(jù)源。3230.減少在Sevlets中使用的同步方法。3231.不定義在包中
17、沒有被用到的友好屬性、方法和類。3232.沒有子類的友好類應(yīng)該定義成 final 。3233.沒有被覆蓋的友好方法應(yīng)該定義成 final 。328.2 建議(3級(jí)或以上)331.為 switch 語句提供一個(gè) default 選項(xiàng)。332.不要在 for 循環(huán)體中對(duì)計(jì)數(shù)器的賦值。333.不要給非公有類定義 public 構(gòu)建器。334.不要對(duì)浮點(diǎn)數(shù)進(jìn)行比較運(yùn)算,尤其是不要進(jìn)行 =, !=運(yùn)算,減少 , , 80字符)要分成多行書寫,長表達(dá)式要在低優(yōu)先級(jí)操作符處劃分新行,操作符放在新行之首,劃分出的新行要進(jìn)行適當(dāng)?shù)目s進(jìn),使排版整齊,語句可讀。 示例:if (filename != null &
18、new File(logPath + filename).length() LogConfig.getFileSize() . / program codepublic static LogIterator read(String logType, Date startTime,Date endTime, int logLevel, String userName, int bufferNum)4.*不允許把多個(gè)短語句寫在一行中,即一行只寫一條語句示例:如下例子不符合規(guī)范。 LogFilename now = null; LogFilename that = null;應(yīng)如下書寫 LogFil
19、ename now = null; LogFilename that = null;5.*if, for, do, while, case, switch, default 等語句自占一行,且if, for, do, while等語句的執(zhí)行語句無論多少都要加括號(hào)。示例:如下例子不符合規(guī)范。 if(writeToFile) writeFileTerrupt();應(yīng)如下書寫: if(writeToFile) writeFileTerrupt(); 6.*相對(duì)獨(dú)立的程序塊之間、變量說明之后必須加空行。示例:如下例子不符合規(guī)范。 if(log.getLevel()
20、LogConfig.getRecordLevel() return; LogWriter writer;應(yīng)如下書寫 if(log.getLevel() LogConfig.getRecordLevel() return; LogWriter writer; int index;7.*對(duì)齊只使用空格鍵,不使用TAB鍵。說明:以免用不同的編輯器閱讀程序時(shí),因TAB鍵所設(shè)置的空格數(shù)目不同而造成程序布局不整齊。JBuilder、UltraEdit等編輯環(huán)境,支持行首TAB替換成空格,應(yīng)將該選項(xiàng)打開。8.*在兩個(gè)以上的關(guān)鍵字、變量、常量進(jìn)行對(duì)等操作時(shí),它們之間的操作符之前、之后或者前后要加空格;進(jìn)行非對(duì)
21、等操作時(shí),如果是關(guān)系密切的立即操作符(如.),后不應(yīng)加空格。說明:采用這種松散方式編寫代碼的目的是使代碼更加清晰。由于留空格所產(chǎn)生的清晰性是相對(duì)的,所以,在已經(jīng)非常清晰的語句中沒有必要再留空格,如果語句已足夠清晰則括號(hào)內(nèi)側(cè)(即左括號(hào)后面和右括號(hào)前面)不需要加空格,多重括號(hào)間不必加空格,因?yàn)樵贘ava語言中括號(hào)已經(jīng)是最清晰的標(biāo)志了。在長語句中,如果需要加的空格非常多,那么應(yīng)該保持整體清晰,而在局部不加空格。給操作符留空格時(shí)不要連續(xù)留兩個(gè)以上空格。示例:(1) 逗號(hào)、分號(hào)只在后面加空格。int a, b, c; (2)比較操作符, 賦值操作符=、 +=,算術(shù)操作符+、%,邏輯操作符&、&,位域操作
22、符= MAX_TIME_VALUE) a = b + c;a *= 2;a = b 2;(3)!、+、-、&(地址運(yùn)算符)等單目操作符前后不加空格。flag = !isEmpty; / 非操作!與內(nèi)容之間i+; / +,-與內(nèi)容之間(4).前后不加空格。p.id = pid; / .前后不加空格(5) if、for、while、switch等與后面的括號(hào)間應(yīng)加空格,使if等關(guān)鍵字更為突出、明顯。if (a = b & c d)B. 建議1.類屬性和類方法不要交叉放置,不同存取范圍的屬性或者方法也盡量不要交叉放置。格式:類定義 類的公有屬性定義 類的保護(hù)屬性定義 類的私有屬性定義 類的公有方法定
23、義 類的保護(hù)方法定義 類的私有方法定義III. 注釋規(guī)范A. 規(guī)則1.一般情況下,源程序有效注釋量必須在30以上。說明:注釋的原則是有助于對(duì)程序的閱讀理解,在該加的地方都加了,注釋不宜太多也不能太少,注釋語言必須準(zhǔn)確、易懂、簡潔??梢杂米⑨尳y(tǒng)計(jì)工具來統(tǒng)計(jì)。02.包的注釋:包的注釋寫入一個(gè)名為 package.html 的HTML格式的說明文件放入當(dāng)前路徑。說明:方便JavaDoc收集?示例:com/huawei/iin/websmap/comm/package.html3.包的注釋內(nèi)容:簡述本包的作用、詳細(xì)描述本包的內(nèi)容、產(chǎn)品模塊名稱和版本、公司版權(quán)。說明:在詳細(xì)描述中應(yīng)該說明這個(gè)包的作用以及
24、在整個(gè)項(xiàng)目中的位置。格式:一句話簡述。詳細(xì)描述。產(chǎn)品模塊名稱和版本公司版權(quán)信息示例:為 WEBSMAP 提供通信類,上層業(yè)務(wù)使用本包的通信類與 SMP-B 進(jìn)行通信。詳細(xì)描述。IIN V100R001 WEBSMAP(C) 版權(quán)所有 2000-2001 華為技術(shù)有限公司4.文件注釋:文件注釋寫入文件頭部,包名之前的位置。說明:注意以 /* 開始避免被 JavaDoc 收集?示例:/* * 注釋內(nèi)容 */package m;5.文件注釋內(nèi)容:版權(quán)說明、描述信息、生成日期、修改歷史。說明:文件名可選。格式:/* * 文件名:文件名 * 版權(quán):版權(quán)
25、 * 描述:描述 * 修改人:修改人 * 修改時(shí)間:YYYY-MM-DD * 跟蹤單號(hào):跟蹤單號(hào) * 修改單號(hào):修改單號(hào) * 修改內(nèi)容:修改內(nèi)容 */說明:每次修改后在文件頭部寫明修改信息,CheckIn的時(shí)候可以直接把藍(lán)色字體信息粘貼到VSS的注釋上。在代碼受控之前可以免去。示例:/* * 文件名:LogManager.java * 版權(quán):Copyright 2000-2001 Huawei Tech. Co. Ltd. All Rights Reserved. * 描述: WIN V200R002 WEBSMAP 通用日志系統(tǒng) * 修改人: 張三 * 修改時(shí)間:2001-02-16 * 修
26、改內(nèi)容:新增 * 修改人: 李四 * 修改時(shí)間:2001-02-26 * 跟蹤單號(hào):D20103 * 修改單號(hào):WSS368 * 修改內(nèi)容:。 * 修改人: 王五 * 修改時(shí)間:2001-03-25 * 跟蹤單號(hào):D27153 * 修改單號(hào):WSS498 * 修改內(nèi)容:。 */6.類和接口的注釋:該注釋放在 package 關(guān)鍵字之后,class 或者 interface 關(guān)鍵字之前。說明:方便JavaDoc收集示例:package m;/* * 注釋內(nèi)容 */public class CommManager7.類和接口的注釋內(nèi)容:類的注釋主
27、要是一句話功能簡述、功能詳細(xì)描述,說明:可根據(jù)需要列出:版本號(hào)、生成日期、作者、內(nèi)容、功能、與其它類的關(guān)系等。 如果一個(gè)類存在Bug,請(qǐng)如實(shí)說明這些Bug。格式:/* * 一句話功能簡述 * 功能詳細(xì)描述 * author 作者 * version 版本號(hào), YYYY-MM-DD * see 相關(guān)類/方法 * since 產(chǎn)品/模塊版本 * deprecated */說明:描述部分說明該類或者接口的功能、作用、使用方法和注意事項(xiàng),每次修改后增加作者和更新版本號(hào)和日期,since 表示從那個(gè)版本開始就有這個(gè)類或者接口,deprecated 表示不建議使用該類或者接口。示例:/* * LogMan
28、ager 類集中控制對(duì)日志讀寫的操作。 * 全部為靜態(tài)變量和靜態(tài)方法,對(duì)外提供統(tǒng)一接口。分配對(duì)應(yīng)日志類型的讀寫器, * 讀取或?qū)懭敕蠗l件的日志紀(jì)錄。 * author 張三,李四,王五* version 1.2, 2001-03-25 * see LogIteraotor * see BasicLog * since CommonLog1.0 */ 8.類屬性、公有和保護(hù)方法注釋:寫在類屬性、公有和保護(hù)方法上面。示例:/* * 注釋內(nèi)容 */private String logType;/* * 注釋內(nèi)容 */public void write()9. 成員變量注釋內(nèi)容:成員變量的意義、目的
29、、功能,可能被用到的地方。10.公有和保護(hù)方法注釋內(nèi)容:列出方法的一句話功能簡述、功能詳細(xì)描述、輸入?yún)?shù)、輸出參數(shù)、返回值、違例等。格式:/* * 一句話功能簡述 * 功能詳細(xì)描述 * param 參數(shù)1 參數(shù)1說明 * param 參數(shù)2 參數(shù)2說明 * return 返回類型說明 * exception/throws 違例類型 違例說明 * see 類、類#方法、類#成員 * deprecated */說明:since 表示從那個(gè)版本開始就有這個(gè)方法;exception或throws 列出可能仍出的異常;deprecated 表示不建議使用該方法。示例: /* * 根據(jù)日志類型和時(shí)間讀取日
30、志。 * 分配對(duì)應(yīng)日志類型的LogReader, 指定類型、查詢時(shí)間段、條件和反復(fù)器緩沖數(shù), * 讀取日志記錄。查詢條件為null或0的表示沒有限制,反復(fù)器緩沖數(shù)為0讀不到日志。 * 查詢時(shí)間為左包含原則,即 startTime, endTime) 。 * param logTypeName 日志類型名(在配置文件中定義的) * param startTime 查詢?nèi)罩镜拈_始時(shí)間 * param endTime 查詢?nèi)罩镜慕Y(jié)束時(shí)間 * param logLevel 查詢?nèi)罩镜募?jí)別 * param userName 查詢?cè)撚脩舻娜罩?* param bufferNum 日志反復(fù)器緩沖記錄數(shù) *
31、return 結(jié)果集,日志反復(fù)器 * since CommonLog1.0 */ public static LogIterator read(String logType, Date startTime,Date endTime, int logLevel, String userName, int bufferNum)11.對(duì)于方法內(nèi)部用throw語句拋出的異常,必須在方法的注釋中標(biāo)明,對(duì)于所調(diào)用的其他方法所拋出的異常,選擇主要的在注釋中說明。 對(duì)于非RuntimeException,即throws子句聲明會(huì)拋出的異常,必須在方法的注釋中標(biāo)明。說明:異常注釋用exception或throw
32、s表示,在JavaDoc中兩者等價(jià),但推薦用exception標(biāo)注Runtime異常,throws標(biāo)注非Runtime異常。異常的注釋必須說明該異常的含義及什么條件下拋出該異常。12.*注釋應(yīng)與其描述的代碼相近,對(duì)代碼的注釋應(yīng)放在其上方或右方(對(duì)單條語句的注釋)相鄰位置,不可放在下面,如放于上方則需與其上面的代碼用空行隔開。13.*注釋與所描述內(nèi)容進(jìn)行同樣的縮排。說明:可使程序排版整齊,并方便注釋的閱讀與理解。示例:如下例子,排版不整齊,閱讀稍感不方便。public void example( )/ 注釋 CodeBlock One / 注釋 CodeBlock Two應(yīng)改為如下布局。publ
33、ic void example( ) / 注釋 CodeBlock One / 注釋 CodeBlock Two14.*將注釋與其上面的代碼用空行隔開。示例:如下例子,顯得代碼過于緊湊。/注釋program code one/注釋program code two應(yīng)如下書寫:/注釋program code one/注釋program code two15.*對(duì)變量的定義和分支語句(條件分支、循環(huán)語句等)必須編寫注釋。說明:這些語句往往是程序?qū)崿F(xiàn)某一特定功能的關(guān)鍵,對(duì)于維護(hù)人員來說,良好的注釋幫助更好的理解程序,有時(shí)甚至優(yōu)于看設(shè)計(jì)文檔。16.*對(duì)于switch語句下的case語句,如果因?yàn)樘厥馇闆r
34、需要處理完一個(gè)case后進(jìn)入下一個(gè)case處理,必須在該case語句處理完、下一個(gè)case語句前加上明確的注釋。說明:這樣比較清楚程序編寫者的意圖,有效防止無故遺漏break語句。17.*邊寫代碼邊注釋,修改代碼同時(shí)修改相應(yīng)的注釋,以保證注釋與代碼的一致性。不再有用的注釋要?jiǎng)h除。18.*注釋的內(nèi)容要清楚、明了,含義準(zhǔn)確,防止注釋二義性。說明:錯(cuò)誤的注釋不但無益反而有害。19.*避免在注釋中使用縮寫,特別是不常用縮寫。說明:在使用縮寫時(shí)或之前,應(yīng)對(duì)縮寫進(jìn)行必要的說明。B. 建議1.*避免在一行代碼或表達(dá)式的中間插入注釋。說明:除非必要,不應(yīng)在代碼或表達(dá)中間插入注釋,否則容易使代碼可理解性變差。2
35、.*通過對(duì)函數(shù)或過程、變量、結(jié)構(gòu)等正確的命名以及合理地組織代碼的結(jié)構(gòu),使代碼成為自注釋的。說明:清晰準(zhǔn)確的函數(shù)、變量等的命名,可增加代碼可讀性,并減少不必要的注釋。3.*在代碼的功能、意圖層次上進(jìn)行注釋,提供有用、額外的信息。說明:注釋的目的是解釋代碼的目的、功能和采用的方法,提供代碼以外的信息,幫助讀者理解代碼,防止沒必要的重復(fù)注釋信息。示例:如下注釋意義不大。/ 如果 receiveFlag 為真if (receiveFlag)而如下的注釋則給出了額外有用的信息。 / 如果從連結(jié)收到消息 if (receiveFlag)4.*在程序塊的結(jié)束行右方加注釋標(biāo)記,以表明某程序塊的結(jié)束。說明:當(dāng)代
36、碼段較長,特別是多重嵌套時(shí),這樣做可以使代碼更清晰,更便于閱讀。示例:參見如下例子。if (.) program code1 while (index MAX_INDEX) program code2 / end of while (index MAX_INDEX) / 指明該條while語句結(jié)束 / end of if (.) / 指明是哪條if語句結(jié)束5.*注釋應(yīng)考慮程序易讀及外觀排版的因素,使用的語言若是中、英兼有的,建議多使用中文,除非能用非常流利準(zhǔn)確的英文表達(dá)。說明:注釋語言不統(tǒng)一,影響程序易讀性和外觀排版,出于對(duì)維護(hù)人員的考慮,建議使用中文。6.方法內(nèi)的單行注釋使用 /。說明:調(diào)試
37、程序的時(shí)候可以方便的使用 /* 。*/ 注釋掉一長段程序。7.注釋盡量使用中文注釋和中文標(biāo)點(diǎn)。方法和類描述的第一句話盡量使用簡潔明了的話概括一下功能,然后加以句號(hào)。接下來的部分可以詳細(xì)描述。說明:JavaDoc工具收集簡介的時(shí)候使用選取第一句話。8.順序?qū)崿F(xiàn)流程的說明使用1、2、3、4在每個(gè)實(shí)現(xiàn)步驟部分的代碼前面進(jìn)行注釋。示例:如下是對(duì)設(shè)置屬性的流程注釋 /1、 判斷輸入?yún)?shù)是否有效。 。 / 2、設(shè)置本地變量。 。9. 一些復(fù)雜的代碼需要說明。示例:這里主要是對(duì)閏年算法的說明。 /1. 如果能被4整除,是閏年; /2. 如果能被100整除,不是閏年.; /3. 如果能被400整除,是閏年.。
38、IV. 命名規(guī)范A. 規(guī)則1.包名采用域后綴倒置的加上自定義的包名,采用小寫字母。在部門內(nèi)部應(yīng)該規(guī)劃好包名的范圍,防止產(chǎn)生沖突。部門內(nèi)部產(chǎn)品使用部門的名稱加上模塊名稱。產(chǎn)品線的產(chǎn)品使用產(chǎn)品的名稱加上模塊的名稱。格式:com.huawei.產(chǎn)品名.模塊名稱com.huawei.部門名稱. 項(xiàng)目名稱示例:融合WEBSMAP包名 com.huawei.iin.websmap通用消息轉(zhuǎn)發(fā)包名 com.huawei.insa2.msgtrans2.類名和接口使用類意義完整的英文描述,每個(gè)英文單詞的首字母使用大寫、其余字母使用小寫的大小寫混合法。示例:OrderInformation, CustomerList, LogMan
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 蘇州2025年江蘇蘇州市相城區(qū)事業(yè)單位招聘70人筆試歷年參考題庫附帶答案詳解
- 浙江2025年浙江省質(zhì)量科學(xué)研究院招聘編外29人筆試歷年參考題庫附帶答案詳解
- 四川2025上半年四川省中醫(yī)藥管理局下屬事業(yè)單位招聘36人筆試歷年參考題庫附帶答案詳解
- 上海2025年上半年上海泖港鎮(zhèn)下屬單位(部門)招聘筆試歷年參考題庫附帶答案詳解
- 2026年及未來5年中國形狀記憶合金行業(yè)市場競爭格局及發(fā)展趨勢預(yù)測報(bào)告
- 2026福建南平機(jī)電職業(yè)學(xué)校招聘中職政治教師2人筆試參考題庫及答案解析
- 中國科學(xué)院西北高原生物研究所2026年海內(nèi)外人才招聘(青海)筆試備考試題及答案解析
- 2026年及未來5年中國針織帽子行業(yè)發(fā)展全景監(jiān)測及投資前景展望報(bào)告
- 2026招商銀行邯鄲分行(籌)社會(huì)招聘筆試備考題庫及答案解析
- 2026成都銀行招聘總行網(wǎng)絡(luò)金融部個(gè)人電子銀行產(chǎn)品設(shè)計(jì)崗等崗位12人筆試模擬試題及答案解析
- Python爬蟲介紹課件
- 鄉(xiāng)鎮(zhèn)避孕藥具培訓(xùn)資料
- 履帶吊課件教學(xué)課件
- 煤礦返崗培訓(xùn)課件
- 醫(yī)院法律法規(guī)專項(xiàng)培訓(xùn)實(shí)施計(jì)劃方案
- 反滲透膜性能檢測與維護(hù)流程
- 數(shù)字藏品授權(quán)協(xié)議書
- 頭暈中西醫(yī)課件
- 光伏電站故障處理培訓(xùn)大綱
- 總經(jīng)理2025年度總結(jié)參考(六篇)
- DB22∕T 3648-2024 取水井封井技術(shù)規(guī)范
評(píng)論
0/150
提交評(píng)論