




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
JAVATOC\o"1-1"\h\z\u一、命名風(fēng) 二、常量定 三、代碼格 四、OOP規(guī) 五、集合處 六、并發(fā)處 七、控制語(yǔ) 八、注釋規(guī) 反例:_name/name/$Object/name_/name$/說(shuō)明:正確的英文拼寫和語(yǔ)法可以讓閱讀者易于理解,避免歧義。注意,即使純拼音命名方式也要避免采用。正例:alibabataobaoyoukuhangzhou
[打折]/getPingfenByName()[評(píng)分]/intDO/BO/DTO/VO/AO正例:MarcoPolo/UserDO/XmlService/TcpUdpDeal/TaPromotion反例:macroPolo/UserDo/XMLService/TCPUDPDeal/格,必須遵從駝峰形式。正例:localValue/getHttpMessage()/AbstractBaseExceptionTest【強(qiáng)制】中括號(hào)是數(shù)組類型的一部分,數(shù)組定義如下:Stringargs;反例:Stringargs[]的方式來(lái)定義?!緩?qiáng)制】POJOis,否則部分框架解析會(huì)引起序反例:BooleanisDeleted;的屬性,它的方isDeleted(),RPCdeleted,導(dǎo)致屬性獲取不到,進(jìn)而拋出異常。包名統(tǒng)一使用單數(shù)形式,但是類名如果有復(fù)數(shù)含義,類名可以使用復(fù)數(shù)形式。規(guī)則參考spring)condi,此類隨意縮寫嚴(yán)重降低了代碼的可閱讀性。量完整的單詞組合來(lái)表達(dá)其意。反例:inta;的隨意命名方式。正例:publicclassOrderFactory;publicclassLoginProxy;publicclassResourceObserver;【推薦】接口類中的方法和屬性不要加任何修飾符號(hào)(public),Javadoc如果一定要定義變量,肯定是與接口方法相關(guān),并且是整個(gè)應(yīng)用的基礎(chǔ)常量。正例:接口方法簽名:voidf();接口基礎(chǔ)常量表示:StringCOMPANY= 反例:接口方法定義:publicabstractvoidf();說(shuō)明:JDK8defaultServiceDAOSOAImpl正例:CacheServiceImpl實(shí)現(xiàn)CacheService【推薦】如果是形容能力的接口名稱,取對(duì)應(yīng)的形容詞做接口名(-able)。正例:AbstractTranslator實(shí)現(xiàn)Translatable說(shuō)明:Service/DAOgetlistcount4)save/insert6)update數(shù)據(jù)對(duì)象:xxxDO,xxx數(shù)據(jù)傳輸對(duì)象:xxxDTO,xxx展示對(duì)象:xxxVO,xxxPOJODO/DTO/BO/VOxxxPOJO反例:Stringkey"Id#taobao_"+tradeId;cache.put(key,1說(shuō)明:Longa2L;21,Long正例:CacheConstsConfigConsts內(nèi)共享常量、包內(nèi)共享常量、類內(nèi)共享常量。modulesconstantA中:publicstaticfinalStringYES="yes";B中:publicstaticfinalStringYES="y";constantconstantprivatestaticfinal為枚舉類。下面正例中的數(shù)字就是延伸信息,表示星期幾。正例:publicEnumM0NDAY(1),TUESDAY(2),WEDNESDAY?),(4),FRIDAY(5),SATURDAY(6),需要換行;如果是非空代碼塊則:5反例:if(a==b【強(qiáng)制】if/for/while/switch/do說(shuō)明:運(yùn)算符包括賦值運(yùn)算符=、邏輯運(yùn)算符&&4tabcharacterspacesfortabs正例:(1-5publicstaticvoidmain(String[]args)4Stringsay=intflag=0;if(flag== if(flag==1) else,}else(StringBuffersb=new.append("huang")....StringBuffersb=newmethod(args1,args2,args3,...,【強(qiáng)制】方法參數(shù)在定義和傳入時(shí),多個(gè)參數(shù)逗號(hào)后邊必須加空格。method("a","b",【強(qiáng)制】IDEtextfileencodingUTF-8;IDEUnixWindows齊。正例:inta=3;longb=4L;floatc=StringBuffersb=newStringBuffer(在變量比較多的情況下,是一種累贅的事情。說(shuō)明:沒有必要插入多個(gè)空行加編譯器解析成本,直接用類名來(lái)訪問(wèn)即可?!緩?qiáng)制】所有的覆寫方法,必須加@Override說(shuō)明:getObject(getbject(O,⊙,加@Override簽名進(jìn)行修改,其實(shí)現(xiàn)類會(huì)馬上編譯報(bào)錯(cuò)。Object說(shuō)明:可變參數(shù)必須放置在參數(shù)列表的最后。(提倡同學(xué)們盡量不publicUsergetUsers(Stringtype,Integer...ids)說(shuō)明:.URLDecoderdecode(StringencodeStr)這個(gè)方法已decode(Stringsource,Stringencode)。接口提供象來(lái)調(diào)用equals。反例:object.equals(說(shuō)明:java.util.Objects#equals(JDK7說(shuō)明:Integervar=?在-128127范圍內(nèi)的賦值,IntegerequalsPOJO【強(qiáng)制】RPC賦值,任何NPENPEDO/DTO/VOPOJO序列失?。蝗绻耆患嫒萆?jí),避免反序列化混亂,那么請(qǐng)修改serialVersionUID說(shuō)明:serialVersionUIDinit屬性值,便于排查問(wèn)題。Stringstr="a,b,c,,";Stringary=//預(yù)期大于3,結(jié)果是315【推薦】類內(nèi)方法定義順序依次是:公有方法或保護(hù)方法>私有方法>說(shuō)明:公有方法是類的調(diào)用者和維護(hù)者最關(guān)心的方法,首屏展示最好;DAOgetter/setter數(shù)名。在publicIntegergetData()if(true)returnthis.data+}elsereturnthis.data-進(jìn)行擴(kuò)展。說(shuō)明:newStringBuilderappendtoStringStringStringstr=for(inti=0;i<100;i++)str=str+final不允許被繼承的類,如:String不允許修改引用的域?qū)ο螅纾篜OJO不允許被重寫的方法,如:POJOsetterObjectclone實(shí)現(xiàn)屬性對(duì)象的拷貝。1)newprivate。2)publicdefault5)staticprivate。staticfinalprivateprivatepublicservicepublichashCodeequalsequals,hashCodeSethashCodeequalsSetMaphashCodeequals說(shuō)明:StringhashCodeequalsStringkey【強(qiáng)制】ArrayListsubListArrayList,否則會(huì)拋出ClassCastException異常,即java.util.RandomAccessSubListcannotbecasttojava.util.ArrayList.說(shuō)明:subListArrayListSubListArrayListArrayListSubListConcurrentModificationExceptiontoArray(T[]array),傳入list.size()。標(biāo)為[list.size()]null,其它數(shù)組元素保持原值,因此最好將方法入?yún)?shù)組大小定義與集合元素個(gè)數(shù)一致。List<String>list=newArrayList<String>(2);String[]array=newString[list.size()];array=list.toArray(array);反例:toArrayObjectClassCastExceptionArrays?asList(add/remove/clearUnsupportedOperationException異常。asListArraysArrays.asListString]]str=newString[]("you","wu");Listlist=第一種情況:list?add("yangguanbao");第二種情況:str[0]="gujin";list.get(O)extendsT>來(lái)接收返回的數(shù)據(jù),此寫法的泛型集合不addsuperT>get說(shuō)明:PECS(ProducerExtendsConsumerSuper)原則:第一、頻繁往外讀取內(nèi)容的,適合用<?extendsT><?superT>IteratorIteratorIterator<String>iterator=list.iterator();while(iterator.hasNext())(Stringitemiterator.next();if(刪除元素的條件){List<String>list=newArrayList<String>();for(Stringitem:list)if("T'.equals(item)){會(huì)是同樣的結(jié)果嗎?JDK7,ComparatorArrays.sort,Collections.sortIllegalArgumentExceptionx,yy,xx>y,y>z,則x>zx=y,x,zy,znewComparator<Student>(){publicintcompare(Studento1,Studento2){returnol.getId。>o2.getId()?1:-1;說(shuō)明:HashMap使用HashMap(intinitialcapacity)initialcapacity=1。注意負(fù)載因7次被迫擴(kuò)大,resizehash說(shuō)明:keySet2IteratorvalueentryJDK8,Map.foreachKSet;entrySet(K-VMapK/Vnull
nullNPE(unsort)和不穩(wěn)定性(unorder)帶來(lái)的負(fù)面影響。遍歷的元素次序是一定的。如:ArrayList是order/unsort;HashMap是unorder/unsort;TreeSet是order/sort。SetListcontains【強(qiáng)制】創(chuàng)建線程或線程池時(shí)請(qǐng)指定有意義的線程名稱,方便出錯(cuò)時(shí)回溯。publicclassTimerTaskThreadextendsThreadpublicTimerTaskThread()(【強(qiáng)制】線程資源必須通過(guò)線程池提供,不允許在應(yīng)用中自行顯式創(chuàng)建線程。說(shuō)明:ExecutorsFixedThreadPool和00M。CachedThreadPool和00M。如果定義為static,DateUtils正例:DateUtilsprivatestaticfinalThreadLocal<DateFormat>df=newThreadLocal<DateFormat>(){protectedDateFormatinitialValue((returnnewSimpleDateFormat("yyyy-MM-說(shuō)明:如果是JDK8的應(yīng)用,可以使用Instant代替Date,LocalDateTime代替Calendar,DateTimeFormatter代替SimpleDateFormat,官方給出的解釋:simplebeautifulstrongimmutable 要用鎖;能鎖區(qū)塊,就不要鎖整個(gè)方法體;能用對(duì)象鎖,就不要用類鎖。則可能會(huì)造成死鎖。A、B、C,否則可能出現(xiàn)死鎖。version3沒有捕獲拋出的異常,其它任務(wù)便會(huì)自動(dòng)終止運(yùn)行,使用ScheduledExecutorServiceCountDownLatchcountDowncatchcountDownawait說(shuō)明:try-catch競(jìng)爭(zhēng)同一seed編碼保證每個(gè)線程持有一個(gè)實(shí)例?!就扑]】在并發(fā)場(chǎng)景下,通過(guò)雙重檢查鎖(double-checkedlocking)實(shí)現(xiàn)延遲初始化的優(yōu)化問(wèn)題隱患(可參考The"Double-CheckedLockingisBroken"Declaration)JDK5volatileclassSingletonprivateHelperhelper=null;publicHelpergetHelper(){if(helper==null)synchronized(this){if(helper==null)helper=newHelper(return//othermethodsand【參考】volatile操作,使用如下類實(shí)現(xiàn):AtomicIntegercount=newAtomicInteger();CPUdefault避免采用單行的編碼方式:if(condition)statements;if-elseif(condition)returnelse )...else )...else...方式表達(dá)邏輯【3模式等來(lái)實(shí)現(xiàn),其中衛(wèi)語(yǔ)句示例如下:publicvoidtoday(){if(isBusy()){System.out.println(“changetime.”);if(isFree())System.out.println(“gototravel.”);System.out.println(“stayathometolearnAlibabaJavaCodingGuidelinesreturn;才能明確什么樣的條件執(zhí)行什么樣的語(yǔ)句,那么,如果閱讀者分析邏輯表達(dá)式finalbooleanexisted=(file.open(fileName,"w")!=null)&&if(existed)if((file.open(fileName,"w")!=null)&&try-catchtry-catch但如果因?yàn)閰?shù)錯(cuò)誤導(dǎo)致中間執(zhí)行回退,或者錯(cuò)誤,那得不償失。RPC/API/HTTPDAO的代碼傳入?yún)?shù)已經(jīng)做過(guò)檢查或者肯
溫馨提示
- 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. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- YY/T 1860.1-2024無(wú)源外科植入物植入物涂層第1部分:通用要求
- 購(gòu)房補(bǔ)充合同范本
- 城市垃圾處理站承包合同協(xié)議書
- 股權(quán)合伙合同協(xié)議
- 單位實(shí)習(xí)生勞動(dòng)合同范本
- 簡(jiǎn)易短期借款合同文本
- 度工業(yè)用地使用權(quán)轉(zhuǎn)讓合同書
- 農(nóng)業(yè)技術(shù)合作協(xié)議合同范本
- 軟件租賃與服務(wù)合同
- 校園欺凌心理安全課件
- 2025年春新人教版歷史七年級(jí)下冊(cè)課件 第16課-明朝的對(duì)外關(guān)系
- 施工單位工程質(zhì)量自評(píng)報(bào)告三篇
- 《家畜環(huán)境衛(wèi)生學(xué)》課件
- 2025年碳化硅(SiC)市場(chǎng)分析現(xiàn)狀
- 2024年湖南高速鐵路職業(yè)技術(shù)學(xué)院高職單招數(shù)學(xué)歷年參考題庫(kù)含答案解析
- 2024年沙洲職業(yè)工學(xué)院高職單招語(yǔ)文歷年參考題庫(kù)含答案解析
- 2024年廣東省《輔警招聘考試必刷500題》考試題庫(kù)【學(xué)生專用】
- 水文工程施工方案
- 《沒有紐扣的紅襯衫》課件
- 2024年學(xué)校綜治安全工作計(jì)劃(3篇)
- 車站信號(hào)自動(dòng)控制(第二版) 課件 1-基礎(chǔ).理論
評(píng)論
0/150
提交評(píng)論