[計(jì)算機(jī)軟件及應(yīng)用]Java開發(fā)規(guī)范

上傳人:仙*** 文檔編號(hào):27956886 上傳時(shí)間:2021-08-21 格式:DOC 頁(yè)數(shù):47 大?。?29KB
收藏 版權(quán)申訴 舉報(bào) 下載
[計(jì)算機(jī)軟件及應(yīng)用]Java開發(fā)規(guī)范_第1頁(yè)
第1頁(yè) / 共47頁(yè)
[計(jì)算機(jī)軟件及應(yīng)用]Java開發(fā)規(guī)范_第2頁(yè)
第2頁(yè) / 共47頁(yè)
[計(jì)算機(jī)軟件及應(yīng)用]Java開發(fā)規(guī)范_第3頁(yè)
第3頁(yè) / 共47頁(yè)

下載文檔到電腦,查找使用更方便

15 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《[計(jì)算機(jī)軟件及應(yīng)用]Java開發(fā)規(guī)范》由會(huì)員分享,可在線閱讀,更多相關(guān)《[計(jì)算機(jī)軟件及應(yīng)用]Java開發(fā)規(guī)范(47頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、Java開發(fā)規(guī)范Aostar & YinHai開發(fā)管理文件編號(hào): 文件名稱:Java開發(fā)規(guī)范版 本 號(hào)日期:項(xiàng)目名稱項(xiàng)目編號(hào):項(xiàng)目負(fù)責(zé)人立項(xiàng)日期:修訂歷史記錄日期版本號(hào)作者說(shuō)明2009-6-25V1.0王流一目 錄第1章序言3第2章java一般性研發(fā)規(guī)范52.1代碼格式52.1.1包、類、方法的命名規(guī)范:52.1.2方法的命名應(yīng)注意避免與java中具有特殊意義的名稱例如equals,hashCode,clone,finalizer等沖突72.1.3Java bean中取得boolean類型的屬性值必須使用is*形式命名82.1.4if,else,while,for等必須使用92.1.5類必須包

2、含在包里,禁止出現(xiàn)無(wú)包的類102.1.6類和方法必須擁有注釋,注釋量占總體代碼25%以上,類頭部,以及方法頭部的注釋應(yīng)符合javadoc標(biāo)準(zhǔn)。102.2基本語(yǔ)法112.2.1不能隨意捕捉異常,原則上誰(shuí)捕捉誰(shuí)處理112.2.2if,while,try,finally,switch , synchronized , static instantiation 里面應(yīng)有相應(yīng)的邏輯處理,不能為空。122.2.3在處理循環(huán)中,不能在程序中人為的改變步長(zhǎng)。132.2.4將簡(jiǎn)單類型int,short,float,double等轉(zhuǎn)化成字符串時(shí),需使用其對(duì)應(yīng)類的toString方法。132.2.5javaBean

3、中hashCode,以及equals方法必須同時(shí)override。142.2.6懶式方式創(chuàng)建對(duì)象:不能采用雙檢查慣用法172.2.7不能在finally中返回值。182.2.8Boolean實(shí)例化時(shí),應(yīng)用使用Boolean.valueOf,Boolean.TRUE,Boolean.FALSE。192.2.9Integer,Byte,Short,Long等實(shí)例化時(shí),應(yīng)用使用valueOf192.2.10對(duì)于多個(gè)if語(yǔ)句嵌套的情況下能夠整合盡量整合。202.2.11override function,不能只有super.function語(yǔ)句,否則視為無(wú)效代碼202.2.12Collection.t

4、oArray的注意事項(xiàng)。212.2.13對(duì)于BigDecimal方法,應(yīng)避免使用float值,double值進(jìn)行創(chuàng)建,應(yīng)使用字符串形式創(chuàng)建。212.2.14String,BigDecimal,BigInteger等值類型調(diào)用replace,add等方法的注意事項(xiàng)。222.2.15需要注意的引起NullException的語(yǔ)句。222.2.16ResultSet使用next時(shí),需要判斷是否具有記錄再進(jìn)行一下步操作。242.2.17字符串使用相應(yīng)的規(guī)則。252.2.18禁止直接調(diào)用System.gc(),System.getRuntime().gc(),System.runFinalization

5、()。262.2.19finalize相應(yīng)的規(guī)則。272.2.20禁止在代碼中使用System.out,ex.printStackTrace打印日志。272.2.21系統(tǒng)資源釋放(誰(shuí)創(chuàng)建的,誰(shuí)關(guān)閉)282.2.22使用Clone時(shí)相應(yīng)的規(guī)則。322.2.23java Bean類必須實(shí)現(xiàn)Serialize接口。322.2.24比較對(duì)象相等應(yīng)使用equals,而不是=。322.2.25Array數(shù)組拷貝應(yīng)使用System.arrayCopy。332.3耦合性以及設(shè)計(jì)332.3.1switch語(yǔ)句必須包含default標(biāo)簽。332.3.2精簡(jiǎn)boolean表達(dá)式以及boolean返回值。342.3.

6、3在方法實(shí)現(xiàn)中應(yīng)避免對(duì)輸入的值參進(jìn)行改變。352.3.4在創(chuàng)建方法中,應(yīng)避免調(diào)用被override的方法352.3.5public static常量屬性必須final。362.3.6Abstract 類必須含有abstract方法。372.3.7接口依賴性。372.4代碼質(zhì)量因素382.4.1Class代碼行數(shù)限制382.4.2函數(shù)代碼質(zhì)量38第3章java安全性檢查規(guī)范403.1跨站腳本XSS403.2違反信任邊界規(guī)則(Trust Boundary Violation)413.3不安全的反射(Unsafe Reflection)423.4SQL 注入(SQL Injection)433.5系

7、統(tǒng)信息泄露(System Information Leakage)443.6資源注入(resource injection)45第1章 序言本規(guī)范的目的在于:建立一個(gè)可行可操作的編程標(biāo)準(zhǔn)、約定和指南,以規(guī)范公司java代碼研發(fā)工作。2009年為公司的質(zhì)量年,為了提高公司研發(fā)能力,該規(guī)范的制定是為了規(guī)范java代碼開發(fā),提高java開發(fā)質(zhì)量,從代碼的層面規(guī)范并提高java項(xiàng)目的研發(fā)水平。該規(guī)范由運(yùn)營(yíng)中心技術(shù)小組制定,運(yùn)營(yíng)中心技術(shù)小組將結(jié)合PMD檢查工具以及相應(yīng)的檢查工具,組織技術(shù)監(jiān)控人員對(duì)重點(diǎn)項(xiàng)目以及新的java項(xiàng)目定期檢查,對(duì)代碼質(zhì)量進(jìn)行評(píng)估,對(duì)代碼質(zhì)量較差限期整改,并報(bào)運(yùn)營(yíng)中心備案作為項(xiàng)目考

8、核依據(jù)。本規(guī)范適用于2009年公司java代碼研發(fā)規(guī)范。本規(guī)范的內(nèi)容包括兩個(gè)方面:java開發(fā)一般規(guī)范,以及java代碼開發(fā)安全性規(guī)范。Java代碼開發(fā)一般規(guī)范主要從java基本語(yǔ)法,代碼格式,耦合性以及設(shè)計(jì)方面,以及代碼質(zhì)量因子等進(jìn)行描述;java代碼開發(fā)安全性規(guī)范主要從sql注入,資源注入,跨站腳步,安全邊界違例,系統(tǒng)信息泄露進(jìn)行描述。為了方便并配合PMD檢查工具等相應(yīng)檢查工具,方便開發(fā)者針對(duì)違規(guī)代碼進(jìn)行調(diào)整,本規(guī)范中java一般開發(fā)規(guī)范描述形式將結(jié)合PMD,并提供示例代碼,其形式如下:n 規(guī)范描述:n PMD規(guī)則名稱:n PMD級(jí)別(注1):n 違規(guī)示例代碼:n 合法示例代碼:本規(guī)范中j

9、ava安全開發(fā)規(guī)范部分將結(jié)合具體項(xiàng)目,對(duì)出現(xiàn)安全隱患的代碼進(jìn)行分析,以及相應(yīng)的解決辦法和思路上進(jìn)行分析,其具體格式如下:n 風(fēng)險(xiǎn)及危害:n 應(yīng)對(duì)措施:n 非安全代碼示例n 安全代碼示例本規(guī)范解釋權(quán)歸運(yùn)營(yíng)中心技術(shù)小組,屬于運(yùn)營(yíng)中心為了提供公司研發(fā)水平以及質(zhì)量的一系列措施中的一部分,在后續(xù)的版本中將根據(jù)具體需要進(jìn)行修改以及調(diào)整。 注1:PMD級(jí)別分為5級(jí) Error high 必須修改 Error 不修改的項(xiàng)需要進(jìn)行說(shuō)明 Warning high 代碼中該項(xiàng)每千行代碼不能多于2%; Warning 參考 Information 參考注2:對(duì)于Error級(jí)別需要項(xiàng)目組通過(guò)以下文字說(shuō)明:文件名代碼行數(shù)

10、觸發(fā)PMD規(guī)則不修改原因技術(shù)小組審核意見技術(shù)小組審核后給出相應(yīng)的整改意見,對(duì)于有爭(zhēng)議的問(wèn)題,可直接與運(yùn)營(yíng)中心技術(shù)小組領(lǐng)導(dǎo)成員溝通。第2章 java一般性研發(fā)規(guī)范2.1 代碼格式2.1.1 包、類、方法的命名規(guī)范:n 規(guī)范描述:包,類,方法命名只能為27個(gè)英文字符以及數(shù)字,不能包括特殊字符例如-,_,$等;包命名,首字符必須小寫;類命名,首字符必須大寫;方法命名,首字符必須小寫;常量命名,必須全部大寫;變量,以及屬性命名,首字符必須小寫;在類中非創(chuàng)建方法其命名應(yīng)避免與類命一致;在類中屬性的命名應(yīng)避免與類命一致;在同一類中屬新命名應(yīng)避免與方法命名一致;在方法中命名臨時(shí)變量時(shí)應(yīng)避免與方法的參數(shù)名一致

11、;n PMD規(guī)則名稱:AvoidDollarSignsPackageCaseClassNamingConventionsMethodNamingConventionsSuspiciousConstantFieldNameVariableNamingConventionsMethodWithSameNameAsEnclosingClassAvoidFieldNameMatchingTypeNameMisleadingVariableNamen 規(guī)則級(jí)別:Error Highwarn Highwarn Highwarn Highwarn HighError HighError HighError

12、Highn 違規(guī)示例代碼:1、 常量、變量命名public static final int my_num = 0; /常量應(yīng)大寫public String MyTest = ; /變量命名,首字符小寫DataModule DMTest = new DataModule();/變量命名,首字符小寫2、 方法命名public class Foo public void FooStuff() 3、 類命名:首字符應(yīng)大寫public class foo 4、 非法使用特殊字符命名 public class Fo$o / yikes! 5、 非創(chuàng)建方法命名應(yīng)避免與類名一致public class My

13、Class / this is bad because it is a method public void MyClass() / this is OK because it is a constructor public MyClass() 6、 方法中臨時(shí)變量的命名應(yīng)避免與其參數(shù)一致:public void bar(String m_baz) / Bad int m_boz = 42; / Bad7、 在類中屬性的命名應(yīng)避免與類命一致: public class Foo extends Bar / Theres probably a better name for foo int foo

14、;8、 在同一類中屬性命名應(yīng)避免與方法命名一致:public class Foo Object bar;/ bar is data or an action or both?void bar() n 合法代碼示例: 1、 常量、變量命名:public static final int MY_NUM = 0; /public String myTest = ;DataModule dmTest = new DataModule();2、 方法命名:首字符應(yīng)小寫public class Foo public void fooStuff() 3、 類命名:首字符應(yīng)大寫public class Foo

15、 2.1.2 方法的命名應(yīng)注意避免與java中具有特殊意義的名稱例如equals,hashCode,clone,finalizer等沖突n 規(guī)范描述:在java中某些方法是具有特殊意義的,例如boolean equals(Object o)是比較兩個(gè)對(duì)象是否相;int hashCode()取得hash值,主要用于hash表;Object clone()用于復(fù)制對(duì)象;void finalizer()用于該類實(shí)例化的對(duì)象釋放時(shí)系統(tǒng)調(diào)用釋放該對(duì)象使用的資源。這些方法具有固定的形參格式,固定的返回值,不能被其他形式或者用于其他方面的方法override,否則將降低代碼可讀性,并為代碼維護(hù)帶來(lái)隱患。n

16、PMD規(guī)則名稱: SuspiciousEqualsMethodNameSuspiciousHashcodeMethodName;FinalizeOverloaded;BooleanGetMethodName;n 規(guī)則級(jí)別:Error HighError HighError HighError Highn 違規(guī)示例代碼:1、 可疑的equals方法命名public class Foo public int equals(Object o) / oops, this probably was supposed to be boolean equals public boolean equals(S

17、tring s) / oops, this probably was supposed to be equals(Object) 2、 可疑的hashCode命名public class Foo public int hashCode(int value) / oops, this probably was supposed to be hashCode n 合法代碼示例: 1、 正確的equals方法命名public class Foo public boolean equals(Object o) / oops, this probably was supposed to be boole

18、an equals 2、 正確的hashCode命名public class Foo public int hashCode() / oops, this probably was supposed to be hashCode 注:一般來(lái)說(shuō)override hashCode方法為了避免鍵值沖突,提高h(yuǎn)ash表的查詢效率,可采用37乘法原則,例如某javabean中包含兩個(gè)關(guān)鍵屬性str1,str2,str3該關(guān)鍵屬性不能為空,這其hash值按以下算法獲得:str1.hashCode()+str2.hashCode()*37+str3.hashCode()*37*37。2.1.3 Java b

19、ean中取得boolean類型的屬性值必須使用is*形式命名n 規(guī)范描述:對(duì)于java bean來(lái)說(shuō),get*是取得該bean的屬性值,set*為設(shè)置該bean的屬性值,is*是獲得該bean中為boolean類型的屬性值,這些方法對(duì)java bean來(lái)說(shuō)是具有特殊意義,如果命名不規(guī)范將導(dǎo)致在使用java bean內(nèi)置方法時(shí)出現(xiàn)取值,或者設(shè)值不成功。n PMD規(guī)則名稱: BooleanGetMethodNamen 規(guī)則級(jí)別:Error Highn 違規(guī)示例代碼:public boolean getFoo(); / badn 合法代碼示例: public boolean isFoo(); / o

20、k2.1.4 if,else,while,for等必須使用n 規(guī)范描述:If,else,while,for等分支循環(huán)語(yǔ)句,必須使用將業(yè)務(wù)處理邏輯包含在內(nèi),這樣可大大提高代碼可讀性,有利于后續(xù)代碼維護(hù)。n PMD規(guī)則名稱: IfStmtsMustUseBraces WhileLoopsMustUseBraces IfElseStmtsMustUseBraces ForLoopsMustUseBracesn 規(guī)則級(jí)別:warn Highn 違規(guī)示例代碼:1、 if語(yǔ)句違例代碼if (foo) x+;2、 else語(yǔ)句違例代碼 if (foo) x+ else x-;3、while語(yǔ)句違例代碼 wh

21、ile(x100) x+;4、 for語(yǔ)句違例代碼for(int i=0;i10;i+) x+;n 合法代碼示例: 1、 if語(yǔ)句if (foo) x+;2、 else語(yǔ)句 if (foo)x+else x-;3、while語(yǔ)句 while(x100) x+;5、 for語(yǔ)句for(int i=0;i10;i+) x+;2.1.5 類必須包含在包里,禁止出現(xiàn)無(wú)包的類n 規(guī)范描述:包是java中類所在命名空間,用于類載入時(shí),虛擬機(jī)快速定位并查找該類;如果一個(gè)無(wú)包類,在類載入時(shí),耗時(shí)較多,并且很可能無(wú)法找到該類。n PMD規(guī)則名稱: NoPackagen 規(guī)則級(jí)別:error High2.1.6

22、類和方法必須擁有注釋,注釋量占總體代碼25%以上,類頭部,以及方法頭部的注釋應(yīng)符合javadoc標(biāo)準(zhǔn)。n 規(guī)范描述:注釋多少是評(píng)價(jià)代碼質(zhì)量好壞的一個(gè)標(biāo)準(zhǔn),25%是符合國(guó)際上對(duì)java注釋的標(biāo)準(zhǔn);對(duì)于類頭部注釋,方法頭部注釋符合javadoc標(biāo)準(zhǔn),可java工具自動(dòng)根據(jù)源碼生成相應(yīng)的java幫助文檔。對(duì)于類頭部注釋需要包含以下信息:該類的主用功能,作者,以及創(chuàng)建時(shí)間等信息;對(duì)于方法頭部注釋需要包含以下信息:該方法的主要功能,以及參數(shù)類型含義,返回值類型含義等等。n 合法代碼注釋示例1、 類頭部注釋規(guī)范/* * 實(shí)時(shí)數(shù)據(jù)文件解析:讀取實(shí)時(shí)數(shù)據(jù)文件,對(duì)其內(nèi)容進(jìn)行解析,生成符合格式以及標(biāo)準(zhǔn)單位的數(shù)據(jù)集

23、合 * author wangliuyi * version 1.0 * since 2009-05-15*/ public class DataFileParse2、 方法頭部注釋規(guī)范/* 判斷該時(shí)間是否在統(tǒng)計(jì)時(shí)區(qū)里面* param time long 從實(shí)時(shí)采集文件中提取的時(shí)間,該時(shí)間為格林威治時(shí)間,單位為毫秒* return boolean true:表示該時(shí)間在合法的時(shí)間區(qū)內(nèi) false:表示該時(shí)間不合法*/public boolean checkStatTimeZone(long time)3、 屬性以及方法內(nèi)部的注釋通過(guò)“/”注釋public class GeneralStat i

24、mplements IStat/解析數(shù)據(jù)格式的分隔符號(hào)private String separator = ,;/開始統(tǒng)計(jì)序號(hào)private int startNum = 1;2.2 基本語(yǔ)法2.2.1 不能隨意捕捉異常,原則上誰(shuí)捕捉誰(shuí)處理n 規(guī)范描述:Java程序運(yùn)行過(guò)程中產(chǎn)生異常,意味著有錯(cuò)誤產(chǎn)生,捕捉該異常,就需要對(duì)該異常進(jìn)行處理:例如記錄日志,事務(wù)回滾等,如果僅捕獲而不處理,人為的屏蔽異常,調(diào)用該函數(shù),可能為調(diào)用者帶來(lái)困惑,調(diào)用者極可能認(rèn)為該方法正常運(yùn)行而做出錯(cuò)誤的判斷。一般來(lái)說(shuō),異常處理機(jī)制屬于應(yīng)用程序總體框架的一部分,一個(gè)良好的異常處理機(jī)制可以避免系統(tǒng)產(chǎn)生的一些不可預(yù)測(cè)的結(jié)果,并提

25、高代碼可讀性,可維護(hù)性,從而提高代碼的質(zhì)量。本規(guī)則要對(duì)異常處理進(jìn)行檢查,對(duì)一些捕捉后不處理,或者直接將該異常拋出等進(jìn)行預(yù)警。n PMD規(guī)則名稱: EmptyCatchBlockn 規(guī)則級(jí)別:Warn Highn 違規(guī)示例代碼:public void doSomething() try doSomething; catch (IOException ioe) / 獲取異常后沒有做任何處理 n 合法代碼示例: public static int parseInt(String value, int defaultValue)if (isNull(value)return defaultValue;

26、tryreturn Integer.parseInt(value.trim();catch (Exception ex) /記錄日志 Log.warn(“轉(zhuǎn)換異?!?ex); /異常后返回缺省值return defaultValue;2.2.2 if,while,try,finally,switch , synchronized , static instantiation 里面應(yīng)有相應(yīng)的邏輯處理,不能為空。n 規(guī)范描述:在if,while,try,finally,switch,synchronized,static Initializer中處理邏輯部分如果為空,很可能這段代碼無(wú)任何作用,是段

27、廢棄的代碼,這段代碼的存在不僅對(duì)代碼維護(hù)帶來(lái)疑惑,降低了整體的代碼質(zhì)量。n PMD規(guī)則名稱:EmptyIfStmtEmptyWhileStmtEmptyTryBlockEmptyFinallyBlock EmptySwitchStatementsEmptySynchronizedBlockEmptyStaticInitializern 規(guī)則級(jí)別:Warn Highn 違規(guī)示例代碼:1. if語(yǔ)句中為空if (foo) 2. while語(yǔ)句中為空 while(x100) 3. try,finally中為空tryfinally4. switch中為空switch(value)5. synchron

28、ized中為空synchronized(this)6. static Initializer為空static2.2.3 在處理循環(huán)中,不能在程序中人為的改變步長(zhǎng)。n 規(guī)范描述:在循環(huán)中對(duì)步長(zhǎng)變量人為的改變,很有可能喪失對(duì)步長(zhǎng)的控制,導(dǎo)致運(yùn)行時(shí)出現(xiàn)一些不可預(yù)測(cè)的結(jié)果。該規(guī)則是限制開發(fā)者對(duì)這種場(chǎng)景的使用,畢竟步長(zhǎng)在多個(gè)地方改變,開發(fā)者很容易沒有考慮全面,導(dǎo)致在特殊情況下出錯(cuò)。n PMD規(guī)則名稱:JumbledIncrementer n 規(guī)則級(jí)別:Errorn 違規(guī)示例代碼:1. 上述代碼會(huì)陷入死循環(huán) public void foo() for (int i = 0; i 10; i+) for (

29、int k = 0; k 0;判空: string=null|string.length()=0;執(zhí)行類似equals語(yǔ)句:a!=null&a.equals(b);禁止使用equals(null)方式n PMD規(guī)則名稱:MisplacedNullCheckUnusedNullCheckInEqualsBrokenNullCheck n 規(guī)則級(jí)別:Error Highn 違規(guī)示例代碼:1、 空指針檢查錯(cuò)位if (a.equals(baz) & a != null) ;if (a.equals(baz) | a = null) ;2、 無(wú)用的空指針檢查if (a!=null & b.equals(

30、a) / 該處雖然對(duì)a對(duì)象進(jìn)行了檢查,但沒有對(duì)b進(jìn)行檢查/whatever3、 常見的判空,判非空代碼編寫上的錯(cuò)誤/判非空,卻使用了|if (string!=null | !string.equals()return string;/判空卻用了& if (string=null & string.equals()return string;4、 比較對(duì)象是否為空,使用了equalsstr.equals(null)n 合法代碼示例:1、 空指針檢查應(yīng)放在前面if (a != null & a.equals(baz) ;if (a = null |a.equals(baz) ;2、 已檢查的對(duì)象作

31、為調(diào)用者if (a!=null & a.equals(method1) / 該處雖然對(duì)a對(duì)象進(jìn)行了檢查,但沒有對(duì)mothod1進(jìn)行檢查/whatever3、 常見的判空,判非空代碼編寫上的錯(cuò)誤/判非空用了&if (string!=null & !string.equals()return string;/判空用| if (string=null | string.equals()return string;4、 比較對(duì)象是否為空,使用了=If(str=null)2.2.16 ResultSet使用next時(shí),需要判斷是否具有記錄再進(jìn)行一下步操作。n 規(guī)范描述:java對(duì)數(shù)據(jù)庫(kù)進(jìn)行查詢操作,取得

32、結(jié)果集合ResultSet對(duì)象,使用next,讓游標(biāo)定位到下一行,下一行不存在時(shí),next()返回false,該規(guī)則這是強(qiáng)制對(duì)下一行是否用記錄進(jìn)行判斷,根據(jù)結(jié)果進(jìn)行后續(xù)操作。n PMD規(guī)則名稱:CheckResultSet n 規(guī)則級(jí)別:Error Highn 違規(guī)示例代碼:Statement stat = conn.createStatement();ResultSet rst = stat.executeQuery(SELECT name FROM person);rst.next(); / what if it returns a false ?String firstName = rs

33、t.getString(1);n 合法代碼示例:/ This is appropriate.Statement stat = conn.createStatement();ResultSet rst = stat.executeQuery(SELECT name FROM person);if (rst.next() String firstName = rst.getString(1);else / here you deal with the error ( at least log it)2.2.17 字符串使用相應(yīng)的規(guī)則。n 規(guī)范描述:字符串是應(yīng)用服務(wù)器創(chuàng)建最多的對(duì)象之一,對(duì)字符串操作

34、按照合適的規(guī)則進(jìn)行編寫,會(huì)極大增加應(yīng)用服務(wù)整體性能,以下是字符串操作相應(yīng)的規(guī)則:字符串比較需要使用equals,而不是=,!=,因?yàn)?只是對(duì)同一引用的對(duì)象比較認(rèn)為相同,而不比較對(duì)象里內(nèi)容是否相等;使用StringBuffer代替string+string+string進(jìn)行字符串相加,n個(gè)字符相加,如果直接用“+“號(hào),會(huì)新產(chǎn)生n-1個(gè)StringBuffer對(duì)象,以及n-1個(gè)String對(duì)象,而用StringBuffer只會(huì)產(chǎn)生1個(gè)String,1個(gè)StringBuffer對(duì)象。使用equalsIgnoreCase() 替代 toUpperCase/toLowerCase().equals(),

35、這樣減少一個(gè)對(duì)象的創(chuàng)建,效率更高。使用StringBuffer.length()替代StringBuffer.toString().length(),這樣減少一個(gè)對(duì)象的創(chuàng)建,效率更高。對(duì)于String對(duì)象禁止使用string.toString(),本身是String對(duì)象,這樣調(diào)用效率低下,而且由于string沒有判空,很可能導(dǎo)致空異常的風(fēng)險(xiǎn)。n PMD規(guī)則名稱:UseEqualsToCompareStringsUseStringBufferLengthUnnecessaryCaseChangeUseStringBufferLenStringToString n 規(guī)則級(jí)別:Error Highn 違規(guī)示例代碼:1、 字符串比較if(str1=str2) 2、 字符串相加String str=str1+str2+str3+str4;3、 大小寫不敏感字符串比較str1.toUpperCase().equals(str2.toUpperCase();4、 取StringBuffer

展開閱讀全文
溫馨提示:
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ù)覽,若沒有圖紙預(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ì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!