2024Java語言編碼規(guī)范_第1頁
2024Java語言編碼規(guī)范_第2頁
2024Java語言編碼規(guī)范_第3頁
2024Java語言編碼規(guī)范_第4頁
2024Java語言編碼規(guī)范_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

Java語言編碼規(guī)范第第PAGE2NUMPAGES36目錄TOC\o"1-2"\h\u25865 51321. 5270222. 514954二、代碼風(fēng)格(Code 5103953.文件組織(File 5280764. 765865. 8259166. 93941 10142887. 118977for語句(for 12266798.空白(White 149914 1464659.命名規(guī)范(Naming 1428585三、編程慣例(Programming 17312053. 18114014. 18295745.變量賦值(Variable 18186946. 20131977.為switch語句的每一個(gè)case加上 20131998.返回值(Returning 201298211. 211585212. 211221313.覆蓋equals()hashCode() 222247515.不使用float和double 223817.盡量減少不必要的 22677018.調(diào)用String.equals() 222915820.將數(shù)據(jù)庫表數(shù)值類型主鍵對(duì)應(yīng)的屬性定義成Long 23593821.不要使用MD2、MD4、MD5 23211622.使用框架封裝的HttpClient 239816四、常見不良習(xí)慣(CommonBad 2531663 2588691. 26224672.代碼里出現(xiàn)System.out和 2675783.空try/catch/finally 26130364. 26151365. 2651136. 2659577. 27320739. 272846810. 27474111. 272010612.避免在循環(huán)體內(nèi)對(duì)隊(duì)列進(jìn)行remove 2813569五、性能優(yōu)化(Performance 29196391. 2951722. 305293.String 30232764.系統(tǒng) 3223226六、RESTful 32100221. 32239523.常見不良習(xí)慣(CommonBad 39PAGEPAGE10NUMPAGES36JAVA二、代碼風(fēng)格(Code文件組織(FileJava源文件(JavaSource開頭注釋(BeginningVersion??Copyright包和引入語句(PackageandImportpackageimportimport*類和接口聲明(ClassandInterface類/接口文檔注釋的變量(沒有訪問修飾符,accessmodifier)forinti0irequAcctDtoArr.lengthi行長度(Line盡量避免一行的長度超過150換行(Wrapping我們這樣注釋(CommentLikejavadoc對(duì)類,接口,公用和保護(hù)方法,公用和保護(hù)類變量使用javadoc注釋,必須包括描述,參數(shù),@paramadviceType@paramlangId語言類型@return@throws代碼新增:addbyyourname]at2009-03-10for代碼修改:modifiedbyyournameat2009-03-10for代碼刪除:deletebyyournameat2009-03-10forEclipse在Eclipse中window/Perferences/Java/CodeStyle/CodeTemplate中可以配置模板,設(shè)置版權(quán)\h每行聲明變量的數(shù)量(NumberPer//indentationlevelintlevel;//sizeoftableintsize;intlevel,intfoo,fooarray[];//indentation //sizeof //currentlyselectedtableentryObjectcurrentEntry;初始化布局voidmyMethod()intint1=0;//beginningofmethodblockif(condition){intint2=0;//beginningof"if"for(inti=0;i<maxLoops;i++){...名:intcount;myMethod()if(condition)intcount0;//類和接口的聲明(ClassandInterfaceclassSampleextendsObject{intivar1;intivar2;Sample(inti,intj){ivar1=i;ivar2=intemptyMethod()簡單語句(Simpleargv++;//OKargc--;//OKargvargc--;//避免這樣復(fù)合語句(Compound復(fù)合語句是包含在大括號(hào)中的語句序列,形如"{語句}"返回語句(returnreturnreturn(size?size: ConnectionconnConnectionFactory.getConnection();if(……){elseif,if-else,ifelse-ifelse語句(ifif-elseifelse-ifelseif(condition)if(condition)elseif(condition)elseif(condition){ifcondition避免這樣!for語句(forfor(initialization;condition;update){for(initialization;condition;while語句(whilewhile(condition){whiledo-while語句(do-whiledo{}whileswitch語句(switchswitch(condition){caseABC:/*fallsthrough*/caseDEF:case上面的示例代碼中就包含注釋/*fallsthrough*/。try-catch語句(try-catchtry{catch(ExceptionClasse){trycatch(ExceptionClasse){finally{空白(White空行(Blank空格(Blankwhile(true)a+=c+a=(a+b)/(c*d);while(d++=s++){printSize("sizeis"+foo+for(expr1;expr2; myMethod((byte)aNum,(Object)x);myMethod((int)(cp+5),((int)(i+3))+1);命名規(guī)范(NamingPascalCamel匈牙利命名法(Hungarian屬性+類型+具體規(guī)范(SpecifiedDAODAODAO業(yè)務(wù)層方法:建議使用add/mod/del/qry*****JSDKStringBuffersbSql;ArrayListalAcctItemDto;HashMaphmServHistoryDto;intiLen;Dto屬性(映射表字段Dto屬性(映射表字段Camel有一個(gè)例外,loggerpublicstaticfinalZSmartLoggerlogger=避免長型名稱(小于15個(gè)字符比較合適),巧妙節(jié)儉地使用縮寫,將標(biāo)準(zhǔn)首字母縮寫詞CustomerClient三、編程慣例(Programming提供對(duì)實(shí)例以及類變量的訪問控制(ProvidingAccesstoInstanceandClass和獲取(gotten),通常這作為方法調(diào)用的邊緣效應(yīng)(sideeffect)而產(chǎn)生。引用類變量和類方法(ReferringtoClassVariablesandfunctiongetDimension(){intwidth=0;intheight=////// functionbooleanisSameDataExist=//if(isSameDataExist==true){booleanisExpiry=//return變量賦值(VariablefooBar.fCharbarFoo.lchar'c';//避免這樣d(abc)r;//避免這樣a=b+c;d=a+if(ab&&cd)//避免這樣if((ab&&(cd))//為switch語句的每一個(gè)case加上返回值(Returningif(booleanExpression){returntrue;elsereturnreturnif(condition)returnreturnreturn(condition?x:條件運(yùn)算符前的表達(dá)式(Expressionsbefore'?'intheConditional如果一個(gè)包含二元運(yùn)算符的表達(dá)式出現(xiàn)在三元運(yùn)算符的"?"之前,那么應(yīng)該給表達(dá)式(x>=0)?x:-特殊注釋(SpecialchannelId=clientContext.params.getStr(SMPPConstants.BSS_CHANNEL_ID,ListsubsList=subsDAO.selectSubsList();if(subsList!=null&&subsList.size()>0){覆蓋equals()hashCode()List<String>nameList=new不使用float和double盡量避免在循環(huán)體內(nèi)進(jìn)行盡量減少不必要的調(diào)用String.equals()StringorgName=if(orgName!=null&&orgName.equals(CN_NJ)){//OK調(diào)用String.substring()將數(shù)據(jù)庫表數(shù)值類型主鍵對(duì)應(yīng)的屬性定義成Long不要使用MD2、MD4、MD5由于MD2、MD4、MD5已被認(rèn)為是不安全的hash算法,因此應(yīng)禁止使用它們。建議使用SHA256來對(duì)密碼進(jìn)行hash處理。使用框架封裝的HttpClientApacheHttpClientSDKCloseableHttpClientCloseableHttpClienthttpclient=HttpClients.createDefault();RequestConfigrequestConfig=RequestConfig.custom()HttpGethttpget1=newHttpGet("\hhttp://localhost/1");trytryHttpEntityentity1=}finallyHttpGethttpget2=newHttpGet("\hhttp://localhost/2");CloseableHttpResponseresponse2=httpclient.execute(httpget2,context);try{HttpEntityentity2=}finally通常我們要關(guān)注以下3HttpRequestGetHttpRequestGethttpRequestGet=newHttpRequestGet();Map<String,Object>params=newHashMap<>();params.put("ftf.httpclient.socket-timeout",2000);params.put("ftf.httpclient.connection-timeout",6000);httpRequestGet.execute("https://xxx.xxx.xxx/s",params);\h的最后。同時(shí),在最終事務(wù)提交(commit)時(shí)內(nèi)存數(shù)據(jù)庫連接應(yīng)當(dāng)被優(yōu)先處理,以此來保證避建議:返回bool值的方法,方法名能夠明確表示檢驗(yàn)結(jié)果,避免只是一個(gè)檢SpringJdbcTemplate的setMaxRows\hZSmartCORE(R9)框架的ftf.sql.limit-result-\hZSmartCORE(V8)框架的【強(qiáng)制】用戶輸入的SQL參數(shù)嚴(yán)格使用參數(shù)綁定或者M(jìn)ETADATA字段值限定,防止SQL注入,禁止字符串拼接SQL訪問數(shù)據(jù)庫。注意:ZSMARTV8框架針對(duì)like和in的宏處理方式是采用的SQL字符串拼接的方式,會(huì)產(chǎn)生四、常見不良習(xí)慣(CommonBad建議一個(gè)文件里的代碼不超過1500代碼里出現(xiàn)System.out和空try/catch/finally這是個(gè)比較隱蔽的錯(cuò)誤,例如if(willDeletetrue)、while(isEndfalse)調(diào)用靜態(tài)的Calendar、出現(xiàn)問題。除SimpleDateFormat類外,還有不少***Format類、***Calendar類等對(duì)應(yīng)方法都是 MacOS Unix Windowsfor(inti=0;i<list1.size();i++){for(i=0;i<list2.size();i++){//do避免在循環(huán)體內(nèi)對(duì)隊(duì)列進(jìn)行remove思路有偏差。建議循環(huán)體內(nèi)部處理時(shí)用新copy的隊(duì)列進(jìn)行實(shí)際的處理。publicpublicclassUnusedAssignmentDemoprivatestaticfinalZSmartLoggerLOGGER=ZSmartLogger.getLogger(UnusedAssignmentDemo.class);publicstaticvoidmain(String[]args){Stringif("1".equals(String.valueOf(3-2)))greeting="Thislineisunusedgreeting="Helloworld!";對(duì)日期的處理應(yīng)當(dāng)使用成熟的工具包,例如java.util.Calendar,mons.lang3.time.DateUtils,再拼接的方式會(huì)得到2001/02/29,這是一個(gè)非法的日期,在某些場(chǎng)景下會(huì)導(dǎo)致解析失敗。intintyear=//月份從0開始計(jì)算,month1表示2月intmonth=1;intdate=intyearAmount=calendar=五、性能優(yōu)化(PerformanceDynamicDictsupServiceBOnull;//推薦這樣for(inti=0;i<size;i++){supServiceBO=(DynamicDict)forinti0;isizeiDynamicDictsupServiceBO=(DynamicDict)finalize盡量避免強(qiáng)制內(nèi)存回收ArrayListArrayListStringStringtagabc";//這樣是OKStringtagavarB Stringtext=for(inti=0;i<size;text ;//另外需要注意的是不要混用StringBuilder/StringBuffer和+操作符StringBuilderbuilder=newStringBuilder(10);for(inti=0;i<size;i++){builder.append("line"+builder.append("line

toCharArray()Doubled=newDouble(“3.67”); Doubled=newDouble(3.67); Stringstrnew Stringstr=系統(tǒng)

I/O六、RESTfulHTTPURLURIGET/zoos:列出所有動(dòng)物園POSTzoosGETzoos/1PUT/zoos/1:更新某個(gè)指定動(dòng)物園的信息(提供該動(dòng)物園的全部信息)PATCHzoos/1:更新某個(gè)指定動(dòng)物園的信息(提供該動(dòng)物園的部分信息)DELETE/z

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論