![軟件編碼規(guī)范_第1頁](http://file1.renrendoc.com/fileroot_temp2/2020-11/9/ead91599-635b-43ad-87b5-6ab9103a4e2d/ead91599-635b-43ad-87b5-6ab9103a4e2d1.gif)
![軟件編碼規(guī)范_第2頁](http://file1.renrendoc.com/fileroot_temp2/2020-11/9/ead91599-635b-43ad-87b5-6ab9103a4e2d/ead91599-635b-43ad-87b5-6ab9103a4e2d2.gif)
![軟件編碼規(guī)范_第3頁](http://file1.renrendoc.com/fileroot_temp2/2020-11/9/ead91599-635b-43ad-87b5-6ab9103a4e2d/ead91599-635b-43ad-87b5-6ab9103a4e2d3.gif)
![軟件編碼規(guī)范_第4頁](http://file1.renrendoc.com/fileroot_temp2/2020-11/9/ead91599-635b-43ad-87b5-6ab9103a4e2d/ead91599-635b-43ad-87b5-6ab9103a4e2d4.gif)
![軟件編碼規(guī)范_第5頁](http://file1.renrendoc.com/fileroot_temp2/2020-11/9/ead91599-635b-43ad-87b5-6ab9103a4e2d/ead91599-635b-43ad-87b5-6ab9103a4e2d5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、.Document number 文檔編號 Confidentiality level 密級 內(nèi)部公開Document version 文檔版本 Total 28 pages 共 28 頁V1.00Java語言編碼規(guī)范Prepared by 擬制Date日期yyyy-mm-ddReviewed by 評審人Date日期yyyy-mm-ddApproved by批準(zhǔn)Date日期yyyy-mm-ddRevision Record 修訂記錄Date日期Revision Version修訂版本Sec No. 修改章節(jié)Change Description修改描述Author作者yyyy-mm-ddVx.
2、xxTable of Contents 目錄1.范圍42.規(guī)范性引用文件43.術(shù)語和定義44.排版規(guī)范54.1.規(guī)則54.2.建議75.注釋規(guī)范85.1.規(guī)則85.2.建議136.命名規(guī)范166.1.規(guī)則166.2.建議177.編碼規(guī)范197.1.規(guī)則197.2.建議238.JTEST規(guī)范258.1.規(guī)則258.2.建議26 1. 范圍本規(guī)范規(guī)定了使用Java語言編程時排版、注釋、命名、編碼和JTEST的規(guī)則和建議。本規(guī)范適用于使用Java語言編程的產(chǎn)品和項目。2. 規(guī)范性引用文件下列文件中的條款通過本規(guī)范的引用而成為本規(guī)范的條款。凡是注日期的引用文件,其隨后所有的修改單(不包括勘誤的內(nèi)容)或
3、修訂版均不適用于本規(guī)范,然而,鼓勵根據(jù)本規(guī)范達成協(xié)議的各方研究是否可使用這些文件的最新版本。凡是不注日期的引用文件,其最新版本適用于本規(guī)范。序號編號名稱1Java語言編程規(guī)范3. 術(shù)語和定義規(guī)則:編程時強制必須遵守的原則。建議:編程時必須加以考慮的原則。格式:對此規(guī)范格式的說明。說明:對此規(guī)范或建議進行必要的解釋。示例:對此規(guī)范或建議從正、反兩個方面給出例子。4. 排版規(guī)范4.1. 規(guī)則4.1.1. *程序塊要采用縮進風(fēng)格編寫,縮進的空格數(shù)為4個。說明:對于由開發(fā)工具自動生成的代碼可以有不一致。4.1.2. *分界符(如大括號和)應(yīng)各獨占一行并且位于同一列,同時與引用它們的語句左對齊。在函數(shù)體
4、的開始、類和接口的定義、以及if、for、do、while、switch、case語句中的程序都要采用如上的縮進方式。示例:如下例子不符合規(guī)范。for (.) . / program codeif (.) . / program code void example_fun( void ) . / program code 應(yīng)如下書寫:for (.) . / program codeif (.) . / program codevoid example_fun( void ) . / program code4.1.3. *較長的語句、表達式或參數(shù)(80字符)要分成多行書寫,長表達式要在低優(yōu)先級
5、操作符處劃分新行,操作符放在新行之首,劃分出的新行要進行適當(dāng)?shù)目s進,使排版整齊,語句可讀。 示例:if (filename != null & 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.1.4. *不允許把多個短語句寫在一行中,即一行只寫
6、一條語句示例:如下例子不符合規(guī)范。LogFilename now = null; LogFilename that = null;應(yīng)如下書寫:LogFilename now = null;LogFilename that = null;4.1.5. *if, for, do, while, case, switch, default 等語句自占一行,且if, for, do, while等語句的執(zhí)行語句無論多少都要加括號。示例:如下例子不符合規(guī)范。if(writeToFile) writeFileTerrupt();應(yīng)如下書寫:if(writeToFile)writeFile
7、Terrupt();4.1.6. *相對獨立的程序塊之間、變量說明之后必須加空行。示例:如下例子不符合規(guī)范。if(log.getLevel() LogConfig.getRecordLevel() return;LogWriter writer;應(yīng)如下書寫:if(log.getLevel() LogConfig.getRecordLevel()return;LogWriter writer;int index;4.1.7. *對齊只使用空格鍵,不使用TAB鍵。說明:以免用不同的編輯器閱讀程序時,因TAB鍵所設(shè)置的空格數(shù)目不同而造成程序布局不整齊。JBuilder、UltraE
8、dit等編輯環(huán)境,支持行首TAB替換成空格,應(yīng)將該選項打開。4.1.8. *在兩個以上的關(guān)鍵字、變量、常量進行對等操作時,它們之間的操作符之前、之后或者前后要加空格;進行非對等操作時,如果是關(guān)系密切的立即操作符(如.),后不應(yīng)加空格。說明:采用這種松散方式編寫代碼的目的是使代碼更加清晰。由于留空格所產(chǎn)生的清晰性是相對的,所以,在已經(jīng)非常清晰的語句中沒有必要再留空格,如果語句已足夠清晰則括號內(nèi)側(cè)(即左括號后面和右括號前面)不需要加空格,多重括號間不必加空格,因為在Java語言中括號已經(jīng)是最清晰的標(biāo)志了。在長語句中,如果需要加的空格非常多,那么應(yīng)該保持整體清晰,而在局部不加空格。給操作符留空格時不
9、要連續(xù)留兩個以上空格。示例:(1) 逗號、分號只在后面加空格。int a, b, c; (2) 比較操作符, 賦值操作符=、 +=,算術(shù)操作符+、%,邏輯操作符&、&,位域操作符= MAX_TIME_VALUE) a = b + c;a *= 2;a = b 2;(3) !、+、-、&(地址運算符)等單目操作符前后不加空格。flag = !isEmpty; / 非操作!與內(nèi)容之間i+; / +,-與內(nèi)容之間(4) .前后不加空格。p.id = pid; / .前后不加空格(5) if、for、while、switch等與后面的括號間應(yīng)加空格,使if等關(guān)鍵字更為突出、明顯。if (a = b &
10、 c d)4.2. 建議類屬性和類方法不要交叉放置,不同存取范圍的屬性或者方法也盡量不要交叉放置。格式:類定義類的公有屬性定義類的保護屬性定義類的私有屬性定義類的公有方法定義類的保護方法定義類的私有方法定義5. 注釋規(guī)范5.1. 規(guī)則5.1.1. 一般情況下,源程序有效注釋量必須在30以上。說明:注釋的原則是有助于對程序的閱讀理解,在該加的地方都加了,注釋不宜太多也不能太少,注釋語言必須準(zhǔn)確、易懂、簡潔??梢杂米⑨尳y(tǒng)計工具來統(tǒng)計。5.1.2. 包的注釋:包的注釋寫入一名為 package.html 的HTML格式說明文件放入當(dāng)前路徑。說明:方便JavaDoc收集示例:com/huawei/ms
11、g/relay/comm/package.html5.1.3. 包的注釋內(nèi)容:簡述本包的作用、詳細(xì)描述本包的內(nèi)容、產(chǎn)品模塊名稱和版本、公司版權(quán)。說明:在詳細(xì)描述中應(yīng)該說明這個包的作用以及在整個項目中的位置。格式:一句話簡述。詳細(xì)描述。產(chǎn)品模塊名稱和版本公司版權(quán)信息示例:為 Relay 提供通信類,上層業(yè)務(wù)使用本包的通信類與SP進行通信。詳細(xì)描述。MMSC V100R002 Relay(C) 版權(quán)所有 2002-2007 文思創(chuàng)新技術(shù)有限公司5.1.4. 文件注釋:文件注釋寫入文件頭部,包名之前的位置。說明:注意以 /* 開始避免被 JavaDoc 收集示例:/* * 注釋內(nèi)容 */packag
12、e m;5.1.5. 文件注釋內(nèi)容:版權(quán)說明、描述信息、生成日期、修改歷史。說明:文件名可選。格式:/* * 文件名:文件名 * 版權(quán):版權(quán) * 描述:描述 * 修改人:修改人 * 修改時間:YYYY-MM-DD * 修改單號:修改單號 * 修改內(nèi)容:修改內(nèi)容 */說明:每次修改后在文件頭部寫明修改信息,CheckIn的時候可以直接把藍(lán)色字體信息粘貼到VSS的注釋上。在代碼受控之前可以免去。示例:/* * 文件名:LogManager.java * 版權(quán):Copyright 2002-2007 Huawei Tech. Co. Ltd. All
13、Rights Reserved. * 描述: MMSC V100R002 Relay 通用日志系統(tǒng) * 修改人: 張三 * 修改時間:2001-02-16 * 修改內(nèi)容:新增 * 修改人: 李四 * 修改時間:2001-02-26 * 修改單號:WSS368 * 修改內(nèi)容:。 * 修改人: 王五 * 修改時間:2001-03-25 * 修改單號:WSS498 * 修改內(nèi)容:。 */5.1.6. 類和接口的注釋:該注釋放在 package 關(guān)鍵字之后,class 或者 interface 關(guān)鍵字之前。說明:方便JavaDoc收集。示例:package com.huawei.msg.relay.c
14、omm;/* * 注釋內(nèi)容 */public class CommManager5.1.7. 類和接口的注釋內(nèi)容:類的注釋主要是一句話功能簡述、功能詳細(xì)描述。說明:可根據(jù)需要列出:版本號、生成日期、作者、內(nèi)容、功能、與其它類的關(guān)系等。 如果一個類存在Bug,請如實說明這些Bug。格式:/* * 一句話功能簡述 * 功能詳細(xì)描述 * author 作者 * version 版本號, YYYY-MM-DD * see 相關(guān)類/方法 * since 產(chǎn)品/模塊版本 * deprecated */說明:描述部分說明該類或者接口的功能、作用、使用方法和注意事項,每次修改后增加作者和更新版本號和日期,si
15、nce 表示從那個版本開始就有這個類或者接口,deprecated 表示不建議使用該類或者接口。示例:/* * LogManager 類集中控制對日志讀寫的操作。 * 全部為靜態(tài)變量和靜態(tài)方法,對外提供統(tǒng)一接口。分配對應(yīng)日志類型的讀寫器, * 讀取或?qū)懭敕蠗l件的日志紀(jì)錄。 * author 張三,李四,王五 * version 1.2, 2001-03-25 * see LogIteraotor * see BasicLog * since CommonLog1.0 */5.1.8. 類屬性、公有和保護方法注釋:寫在類屬性、公有和保護方法上面。示例:/* * 注釋內(nèi)容 */private S
16、tring logType;/* * 注釋內(nèi)容 */public void write()5.1.9. 成員變量注釋內(nèi)容:成員變量的意義、目的、功能,可能被用到的地方。5.1.10. 公有和保護方法注釋內(nèi)容:列出方法的一句話功能簡述、功能詳細(xì)描述、輸入?yún)?shù)、輸出參數(shù)、返回值、違例等。格式:/* * 一句話功能簡述 * 功能詳細(xì)描述 * param 參數(shù)1 參數(shù)1說明 * param 參數(shù)2 參數(shù)2說明 * return 返回類型說明 * exception/throws 違例類型 違例說明 * see 類、類#方法、類#成員 * deprecated */說明:since 表示從那個版本開始就
17、有這個方法;exception或throws 列出可能仍出的異常;deprecated 表示不建議使用該方法。示例:/* * 根據(jù)日志類型和時間讀取日志。 * 分配對應(yīng)日志類型的LogReader, 指定類型、查詢時間段、條件和反復(fù)器緩沖數(shù), * 讀取日志記錄。查詢條件為null或0表示無限制,反復(fù)器緩沖數(shù)為0讀不到日志。 * 查詢時間為左包含原則,即 startTime, endTime) 。 * param logTypeName 日志類型名(在配置文件中定義的) * param startTime 查詢?nèi)罩镜拈_始時間 * param endTime 查詢?nèi)罩镜慕Y(jié)束時間 * param l
18、ogLevel 查詢?nèi)罩镜募墑e * param userName 查詢該用戶的日志 * param bufferNum 日志反復(fù)器緩沖記錄數(shù) * return 結(jié)果集,日志反復(fù)器 * since CommonLog1.0 */public static LogIterator read(String logType, Date startTime, Date endTime, int logLevel, String userName, int bufferNum)5.1.11. 對于方法內(nèi)部用throw語句拋出的異常,必須在方法的注釋中標(biāo)明,對于所調(diào)用的其他方法所拋出的異常,選擇主要的在注釋
19、中說明。 對于非RuntimeException,即throws子句聲明會拋出的異常,必須在方法的注釋中標(biāo)明。說明:異常注釋用exception或throws表示,在JavaDoc中兩者等價,但推薦用exception標(biāo)注Runtime異常,throws標(biāo)注非Runtime異常。異常的注釋必須說明該異常的含義及什么條件下拋出該異常。5.1.12. *注釋應(yīng)與其描述的代碼相近,對代碼的注釋應(yīng)放在其上方或右方(對單條語句的注釋)相鄰位置,不可放在下面,如放于上方則需與其上面的代碼用空行隔開。5.1.13. *注釋與所描述內(nèi)容進行同樣的縮排。說明:可使程序排版整齊,并方便注釋的閱讀與理解。示例:如下
20、例子,排版不整齊,閱讀稍感不方便。public void example( )/ 注釋 CodeBlock One / 注釋 CodeBlock Two應(yīng)改為如下布局。public void example( ) / 注釋 CodeBlock One / 注釋 CodeBlock Two5.1.14. *將注釋與其上面的代碼用空行隔開。示例:如下例子,顯得代碼過于緊湊。/注釋program code one/注釋program code two應(yīng)如下書寫:/注釋program code one/注釋program code two5.1.15. *對變量的定義和分支語句(條件分支、循環(huán)語句等)
21、必須編寫注釋。說明:這些語句往往是程序?qū)崿F(xiàn)某一特定功能的關(guān)鍵,對于維護人員來說,良好的注釋幫助更好的理解程序,有時甚至優(yōu)于看設(shè)計文檔。5.1.16. *對于switch語句下的case語句,如果因為特殊情況需要處理完一個case后進入下一個case處理,必須在該case語句處理完、下一個case語句前加上明確的注釋。說明:這樣比較清楚程序編寫者的意圖,有效防止無故遺漏break語句。5.1.17. *邊寫代碼邊注釋,修改代碼同時修改相應(yīng)的注釋,以保證注釋與代碼的一致性。不再有用的注釋要刪除。5.1.18. *注釋的內(nèi)容要清楚、明了,含義準(zhǔn)確,防止注釋二義性。說明:錯誤的注釋不但無益反而有害。5
22、.1.19. *避免在注釋中使用縮寫,特別是不常用縮寫。說明:在使用縮寫時或之前,應(yīng)對縮寫進行必要的說明。5.2. 建議5.2.1. *避免在一行代碼或表達式的中間插入注釋。說明:除非必要,不應(yīng)在代碼或表達中間插入注釋,否則容易使代碼可理解性變差。5.2.2. *通過對函數(shù)或過程、變量、結(jié)構(gòu)等正確的命名以及合理地組織代碼的結(jié)構(gòu),使代碼成為自注釋的。說明:清晰準(zhǔn)確的函數(shù)、變量等的命名,可增加代碼可讀性,并減少不必要的注釋。5.2.3. *在代碼的功能、意圖層次上進行注釋,提供有用、額外的信息。說明:注釋的目的是解釋代碼的目的、功能和采用的方法,提供代碼以外的信息,幫助讀者理解代碼,防止沒必要的重
23、復(fù)注釋信息。示例:如下注釋意義不大。/ 如果 receiveFlag 為真if (receiveFlag)而如下的注釋則給出了額外有用的信息。 / 如果從連結(jié)收到消息 if (receiveFlag)5.2.4. *在程序塊的結(jié)束行右方加注釋標(biāo)記,以表明某程序塊的結(jié)束。說明:當(dāng)代碼段較長,特別是多重嵌套時,這樣做可以使代碼更清晰,更便于閱讀。示例:參見如下例子。if (.) program code1 while (index MAX_INDEX) program code2 / end of while (index MAX_INDEX) / 指明該條while語句結(jié)束 / end of i
24、f (.) / 指明是哪條if語句結(jié)束5.2.5. *注釋應(yīng)考慮程序易讀及外觀排版的因素,使用的語言若是中、英兼有的,建議多使用中文,除非能用非常流利準(zhǔn)確的英文表達。說明:注釋語言不統(tǒng)一,影響程序易讀性和外觀排版,出于維護的考慮,建議使用中文。5.2.6. 方法內(nèi)的單行注釋使用 /。說明:調(diào)試程序的時候可以方便的使用 /* 。*/ 注釋掉一長段程序。5.2.7. 注釋盡量使用中文注釋和中文標(biāo)點。方法和類描述的第一句話盡量使用簡潔明了的話概括一下功能,然后加以句號。接下來的部分可以詳細(xì)描述。說明:JavaDoc工具收集簡介的時候使用選取第一句話。5.2.8. 順序?qū)崿F(xiàn)流程的說明使用1、2、3、4
25、在每個實現(xiàn)步驟部分的代碼前面進行注釋。示例:如下是對設(shè)置屬性的流程注釋 /1、 判斷輸入?yún)?shù)是否有效。 。 / 2、設(shè)置本地變量。 。5.2.9. 一些復(fù)雜的代碼需要說明。示例:這里主要是對閏年算法的說明。 /1. 如果能被4整除,是閏年; /2. 如果能被100整除,不是閏年.; /3. 如果能被400整除,是閏年.。6. 命名規(guī)范6.1. 規(guī)則6.1.1. 包名采用域后綴倒置的加上自定義的包名,采用小寫字母。在部門內(nèi)部應(yīng)該規(guī)劃好包名的范圍,防止產(chǎn)生沖突。部門內(nèi)部產(chǎn)品使用部門的名稱加上模塊名稱。產(chǎn)品線的產(chǎn)品使用產(chǎn)品的名稱加上模塊的名稱。格式:com.huawei.產(chǎn)品名.模塊名稱com.hu
26、awei.部門名稱. 項目名稱示例:Relay模塊包名 com.huawei.msg.relay通用日志模塊包名 com.huawei.msg.log6.1.2. 類名和接口使用類意義完整的英文描述,每個英文單詞的首字母使用大寫、其余字母使用小寫的大小寫混合法。示例:OrderInformation, CustomerList, LogManager, LogConfig6.1.3. 方法名使用類意義完整的英文描述:第一個單詞的字母使用小寫、剩余單詞首字母大寫其余字母小寫的大小寫混合法。示例:private void calculateRate();public void addNewOrde
27、r();6.1.4. 方法中,存取屬性的方法采用setter 和 getter方法,動作方法采用動詞和動賓結(jié)構(gòu)。格式:get + 非布爾屬性名()is + 布爾屬性名()set + 屬性名()動詞()動詞 + 賓語()示例:public String getType();public boolean isFinished();public void setVisible(boolean);public void show();public void addKeyListener(Listener);6.1.5. 屬性名使用意義完整的英文描述:第一個單詞的字母使用小寫、剩余單詞首字母大寫其余字母
28、小寫的大小寫混合法。屬性名不能與方法名相同。示例: private customerName;private orderNumber;private smpSession;6.1.6. 常量名使用全大寫的英文描述,英文單詞之間用下劃線分隔開,并且使用 final static 修飾。示例: public final static int MAX_VALUE = 1000;public final static String DEFAULT_START_DATE = 2001-12-08;6.1.7. 屬性名可以和公有方法參數(shù)相同,不能和局部變量相同,引用非靜態(tài)成員變量時使用 this 引用,引
29、用靜態(tài)成員變量時使用類名引用。示例:public class Person private String name; private static List properties; public void setName (String name) = name; public void setProperties (List properties) Pperties = properties; 6.2. 建議6.2.1. 常用組件類的命名以組件名加上組件類型名結(jié)尾。示例:Application 類型的,命名以App 結(jié)尾MainAppFrame 類型的,
30、命名以Frame 結(jié)尾TopoFramePanel 類型的,建議命名以Panel 結(jié)尾CreateCircuitPanelBean 類型的,建議命名以Bean 結(jié)尾DataAccessBeanEJB 類型的,建議命名以EJB 結(jié)尾DBProxyEJBApplet 類型的,建議命名以Applet 結(jié)尾PictureShowApplet6.2.2. 如果函數(shù)名超過15 個字母,可采用以去掉元音字母的方法或者以行業(yè)內(nèi)約定俗成的縮寫方式縮寫函數(shù)名。示例:getCustomerInformation() 改為 getCustomerInfo()6.2.3. 準(zhǔn)確地確定成員函數(shù)的存取控制符號,不是必須使用
31、 public 屬性的,請使用 protected,不是必須使用 protected, 請使用 private。示例:protected void setUserName(), private void calculateRate()6.2.4. 含有集合意義的屬性命名,盡量包含其復(fù)數(shù)的意義。示例:customers, orderItems7. 編碼規(guī)范7.1. 規(guī)則7.1.1. *明確方法功能,精確(而不是近似)地實現(xiàn)方法設(shè)計。一個函數(shù)僅完成一件功能,即使簡單功能也應(yīng)該編寫方法實現(xiàn)。 說明:雖然為僅用一兩行就可完成的功能去編方法好象沒有必要,但用方法可使功能明確化,增加程序可讀性,亦可方便維
32、護、測試。7.1.2. 應(yīng)明確規(guī)定對接口方法參數(shù)的合法性檢查應(yīng)由方法的調(diào)用者負(fù)責(zé)還是由接口方法本身負(fù)責(zé),缺省是由方法調(diào)用者負(fù)責(zé)。說明:對于模塊間接口方法的參數(shù)的合法性檢查這一問題,往往有兩個極端現(xiàn)象,即:要么是調(diào)用者和被調(diào)用者對參數(shù)均不作合法性檢查,結(jié)果就遺漏了合法性檢查這一必要的處理過程,造成問題隱患;要么就是調(diào)用者和被調(diào)用者均對參數(shù)進行合法性檢查,這種情況雖不會造成問題,但產(chǎn)生了冗余代碼,降低了效率。7.1.3. 明確類的功能,精確(而非近似)地實現(xiàn)類的設(shè)計。一個類僅實現(xiàn)一組相近的功能。說明:劃分類的時候,應(yīng)該盡量把邏輯處理、數(shù)據(jù)和顯示分離,實現(xiàn)類功能的單一性。示例:數(shù)據(jù)類不能包含數(shù)據(jù)處理
33、的邏輯。通信類不能包含顯示處理的邏輯。7.1.4. 所有的數(shù)據(jù)類必須重載toString() 方法,返回該類有意義的內(nèi)容。說明: 父類如果實現(xiàn)了比較合理的toString() ,子類可以繼承不必再重寫。示例:public TopoNode private String nodeName; public String toString() return NodeName : + nodeName; 7.1.5. 數(shù)據(jù)庫操作、IO操作等需要使用結(jié)束close()的對象必須在try -catch-finally 的finally中close()。示例:try / . .catch(IOExcepti
34、on ioe) /. .finally try out.close(); catch (IOException ioe) /. . 7.1.6. 異常捕獲后,如果不對該異常進行處理,則應(yīng)該紀(jì)錄日志或者ex.printStackTrace() 。說明:若有特殊原因必須用注釋加以說明。示例:try /. .catch (IOException ioe) ioe.printStackTrace ();7.1.7. 自己拋出的異常必須要填寫詳細(xì)的描述信息。說明:便于問題定位。示例:throw new IOException(Writing data error! Data: + data.toStri
35、ng();7.1.8. 運行期異常使用RuntimeException的子類來表示,不用在可能拋出異常的方法聲明上加throws子句。非運行期異常是從Exception繼承而來,必須在方法聲明上加throws子句。說明:非運行期異常是由外界運行環(huán)境決定異常拋出條件的異常,例如文件操作,可能受權(quán)限、磁盤空間大小的影響而失敗,這種異常是程序本身無法避免的,需要調(diào)用者明確考慮該異常出現(xiàn)時該如何處理方法,因此非運行期異常必須有throws子句標(biāo)出,不標(biāo)出或者調(diào)用者不捕獲該類型異常都會導(dǎo)致編譯失敗,從而防止程序員本身疏忽。運行期異常是程序在運行過程中本身考慮不周導(dǎo)致的異常,例如傳入錯誤的參數(shù)等。拋出運行
36、期異常的目的是防止異常擴散,導(dǎo)致定位困難。因此在做異常體系設(shè)計時要根據(jù)錯誤的性質(zhì)合理選擇自定義異常的繼承關(guān)系。還有一種異常是Error 繼承而來的,這種異常由虛擬機自己維護,表示發(fā)生了致命錯誤,程序無法繼續(xù)運行例如內(nèi)存不足。我們自己的程序不應(yīng)該捕獲這種異常,并且也不應(yīng)該創(chuàng)建該種類型的異常。7.1.9. 在程序中使用異常處理還是使用錯誤返回碼處理,根據(jù)是否有利于程序結(jié)構(gòu)來確定,并且異常和錯誤碼不應(yīng)該混合使用,推薦使用異常。說明:一個系統(tǒng)或者模塊應(yīng)該統(tǒng)一規(guī)劃異常類型和返回碼的含義。 但是不能用異常來做一般流程處理的方式,不要過多地使用異常,異常的處理效率比條件分支低,而且異常的跳轉(zhuǎn)流程難以預(yù)測。7
37、.1.10. *注意運算符的優(yōu)先級,并用括號明確表達式的操作順序,避免使用默認(rèn)優(yōu)先級。說明:防止閱讀程序時產(chǎn)生誤解,防止因默認(rèn)的優(yōu)先級與設(shè)計思想不符而導(dǎo)致程序出錯。示例:下列語句中的表達式word = (high 8) | low (1)if (a | b) & (a & c) (2)if (a | b) (c & d) (3)如果書寫為high 8 | lowa | b & a & ca | b , , 。44. 一個字符的連接使用 而不使用 “ ”,如:String a = b + c。45. 不要在循環(huán)體內(nèi)調(diào)用同步方法和使用 try-catch 塊。46. 不要使用不必要的布爾值比較,如
38、:if (a.equals(b), 而不是 if (a.equals(b)=true)。47. 常量字符串使用 String, 非常量字符串使用 StringBuffer 。48. 在循環(huán)條件判斷的時候不要使用復(fù)雜的表達式。49. 對于“if (condition) do1; else do2;”語句使用條件操作符“if (condition)?do1:do2;”。50. 不要在循環(huán)體內(nèi)定義變量。51. 使用StringBuffer的時候設(shè)置初始容量。52. 盡可能的使用局部變量進行運算。53. 盡可能少的使用 !操作符。(5級)54. 盡可能的對接口進行 instanceof 運算。(5級)55. 不要使用 Date 而要使用 long 替代。56. 不要顯式調(diào)用
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 體能場地出租合同范本
- 2020-2025年中國漁夫帽行業(yè)市場前景預(yù)測及投資方向研究報告
- 2025年度旅游產(chǎn)業(yè)合伙分紅經(jīng)營協(xié)議
- 2025年度智能農(nóng)業(yè)管理系統(tǒng)合同
- 2025年度個人消費信貸還款協(xié)議范本
- 2025年度農(nóng)產(chǎn)品溯源與銷售合作協(xié)議
- 2025年橡膠機械項目可行性研究報告
- 2025年中國蔬菜、水果行業(yè)市場調(diào)研分析及投資戰(zhàn)略規(guī)劃報告
- 強制執(zhí)行咨詢申請書
- 中國紗管原紙市場全景評估及發(fā)展趨勢研究預(yù)測報告
- 自然辯證法概論(新)課件
- 2023年《植物保護》專業(yè)考試題庫
- 基層醫(yī)療機構(gòu)基本情況調(diào)查報告
- 華晨寶馬汽車4S店營銷策略畢業(yè)論文
- 你畫我猜題目大全
- 人教版二年級數(shù)學(xué)下冊啟迪全優(yōu)卷第八、九單元測試卷(有答案)
- 幼兒園PPT課件《歡樂的元宵節(jié)》
- 住院患者發(fā)生管路非計劃性拔管應(yīng)急預(yù)案及處理流程應(yīng)急預(yù)案
- 電解槽檢修施工方案
- 正常分娩 分娩機制 助產(chǎn)學(xué)課件
- 讀書分享-精力管理課件
評論
0/150
提交評論