版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
JAVATOC\o"1-1"\h\z\u一、命名風(fēng) 二、常量定 三、代碼格 四、OOP規(guī) 五、集合處 六、并發(fā)處 七、控制語 八、注釋規(guī) 反例:_name/name/$Object/name_/name$/說明:正確的英文拼寫和語法可以讓閱讀者易于理解,避免歧義。注意,即使純拼音命名方式也要避免采用。正例:alibabataobaoyoukuhangzhou
[打折]/getPingfenByName()[評分]/intDO/BO/DTO/VO/AO正例:MarcoPolo/UserDO/XmlService/TcpUdpDeal/TaPromotion反例:macroPolo/UserDo/XMLService/TCPUDPDeal/格,必須遵從駝峰形式。正例:localValue/getHttpMessage()/AbstractBaseExceptionTest【強(qiáng)制】中括號是數(shù)組類型的一部分,數(shù)組定義如下:Stringargs;反例:Stringargs[]的方式來定義?!緩?qiáng)制】POJOis,否則部分框架解析會引起序反例:BooleanisDeleted;的屬性,它的方isDeleted(),RPCdeleted,導(dǎo)致屬性獲取不到,進(jìn)而拋出異常。包名統(tǒng)一使用單數(shù)形式,但是類名如果有復(fù)數(shù)含義,類名可以使用復(fù)數(shù)形式。規(guī)則參考spring)condi,此類隨意縮寫嚴(yán)重降低了代碼的可閱讀性。量完整的單詞組合來表達(dá)其意。反例:inta;的隨意命名方式。正例:publicclassOrderFactory;publicclassLoginProxy;publicclassResourceObserver;【推薦】接口類中的方法和屬性不要加任何修飾符號(public),Javadoc如果一定要定義變量,肯定是與接口方法相關(guān),并且是整個應(yīng)用的基礎(chǔ)常量。正例:接口方法簽名:voidf();接口基礎(chǔ)常量表示:StringCOMPANY= 反例:接口方法定義:publicabstractvoidf();說明:JDK8defaultServiceDAOSOAImpl正例:CacheServiceImpl實現(xiàn)CacheService【推薦】如果是形容能力的接口名稱,取對應(yīng)的形容詞做接口名(-able)。正例:AbstractTranslator實現(xiàn)Translatable說明:Service/DAOgetlistcount4)save/insert6)update數(shù)據(jù)對象:xxxDO,xxx數(shù)據(jù)傳輸對象:xxxDTO,xxx展示對象:xxxVO,xxxPOJODO/DTO/BO/VOxxxPOJO反例:Stringkey"Id#taobao_"+tradeId;cache.put(key,1說明: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說明:運(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ù)逗號后邊必須加空格。method("a","b",【強(qiáng)制】IDEtextfileencodingUTF-8;IDEUnixWindows齊。正例:inta=3;longb=4L;floatc=StringBuffersb=newStringBuffer(在變量比較多的情況下,是一種累贅的事情。說明:沒有必要插入多個空行加編譯器解析成本,直接用類名來訪問即可?!緩?qiáng)制】所有的覆寫方法,必須加@Override說明:getObject(getbject(O,⊙,加@Override簽名進(jìn)行修改,其實現(xiàn)類會馬上編譯報錯。Object說明:可變參數(shù)必須放置在參數(shù)列表的最后。(提倡同學(xué)們盡量不publicUsergetUsers(Stringtype,Integer...ids)說明:.URLDecoderdecode(StringencodeStr)這個方法已decode(Stringsource,Stringencode)。接口提供象來調(diào)用equals。反例:object.equals(說明:java.util.Objects#equals(JDK7說明:Integervar=?在-128127范圍內(nèi)的賦值,IntegerequalsPOJO【強(qiáng)制】RPC賦值,任何NPENPEDO/DTO/VOPOJO序列失敗;如果完全不兼容升級,避免反序列化混亂,那么請修改serialVersionUID說明:serialVersionUIDinit屬性值,便于排查問題。Stringstr="a,b,c,,";Stringary=//預(yù)期大于3,結(jié)果是315【推薦】類內(nèi)方法定義順序依次是:公有方法或保護(hù)方法>私有方法>說明:公有方法是類的調(diào)用者和維護(hù)者最關(guān)心的方法,首屏展示最好;DAOgetter/setter數(shù)名。在publicIntegergetData()if(true)returnthis.data+}elsereturnthis.data-進(jìn)行擴(kuò)展。說明:newStringBuilderappendtoStringStringStringstr=for(inti=0;i<100;i++)str=str+final不允許被繼承的類,如:String不允許修改引用的域?qū)ο?,如:POJO不允許被重寫的方法,如:POJOsetterObjectclone實現(xiàn)屬性對象的拷貝。1)newprivate。2)publicdefault5)staticprivate。staticfinalprivateprivatepublicservicepublichashCodeequalsequals,hashCodeSethashCodeequalsSetMaphashCodeequals說明:StringhashCodeequalsStringkey【強(qiáng)制】ArrayListsubListArrayList,否則會拋出ClassCastException異常,即java.util.RandomAccessSubListcannotbecasttojava.util.ArrayList.說明:subListArrayListSubListArrayListArrayListSubListConcurrentModificationExceptiontoArray(T[]array),傳入list.size()。標(biāo)為[list.size()]null,其它數(shù)組元素保持原值,因此最好將方法入?yún)?shù)組大小定義與集合元素個數(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>來接收返回的數(shù)據(jù),此寫法的泛型集合不addsuperT>get說明: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)){會是同樣的結(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;說明:HashMap使用HashMap(intinitialcapacity)initialcapacity=1。注意負(fù)載因7次被迫擴(kuò)大,resizehash說明:keySet2IteratorvalueentryJDK8,Map.foreachKSet;entrySet(K-VMapK/Vnull
nullNPE(unsort)和不穩(wěn)定性(unorder)帶來的負(fù)面影響。遍歷的元素次序是一定的。如:ArrayList是order/unsort;HashMap是unorder/unsort;TreeSet是order/sort。SetListcontains【強(qiáng)制】創(chuàng)建線程或線程池時請指定有意義的線程名稱,方便出錯時回溯。publicclassTimerTaskThreadextendsThreadpublicTimerTaskThread()(【強(qiáng)制】線程資源必須通過線程池提供,不允許在應(yīng)用中自行顯式創(chuàng)建線程。說明:ExecutorsFixedThreadPool和00M。CachedThreadPool和00M。如果定義為static,DateUtils正例:DateUtilsprivatestaticfinalThreadLocal<DateFormat>df=newThreadLocal<DateFormat>(){protectedDateFormatinitialValue((returnnewSimpleDateFormat("yyyy-MM-說明:如果是JDK8的應(yīng)用,可以使用Instant代替Date,LocalDateTime代替Calendar,DateTimeFormatter代替SimpleDateFormat,官方給出的解釋:simplebeautifulstrongimmutable 要用鎖;能鎖區(qū)塊,就不要鎖整個方法體;能用對象鎖,就不要用類鎖。則可能會造成死鎖。A、B、C,否則可能出現(xiàn)死鎖。version3沒有捕獲拋出的異常,其它任務(wù)便會自動終止運(yùn)行,使用ScheduledExecutorServiceCountDownLatchcountDowncatchcountDownawait說明:try-catch競爭同一seed編碼保證每個線程持有一個實例?!就扑]】在并發(fā)場景下,通過雙重檢查鎖(double-checkedlocking)實現(xiàn)延遲初始化的優(yōu)化問題隱患(可參考The"Double-CheckedLockingisBroken"Declaration)JDK5volatileclassSingletonprivateHelperhelper=null;publicHelpergetHelper(){if(helper==null)synchronized(this){if(helper==null)helper=newHelper(return//othermethodsand【參考】volatile操作,使用如下類實現(xiàn):AtomicIntegercount=newAtomicInteger();CPUdefault避免采用單行的編碼方式:if(condition)statements;if-elseif(condition)returnelse )...else )...else...方式表達(dá)邏輯【3模式等來實現(xiàn),其中衛(wèi)語句示例如下:publicvoidtoday(){if(isBusy()){System.out.println(“changetime.”);if(isFree())System.out.println(“gototravel.”);System.out.println(“stayathometolearnAlibabaJavaCodingGuidelinesreturn;才能明確什么樣的條件執(zhí)行什么樣的語句,那么,如果閱讀者分析邏輯表達(dá)式finalbooleanexisted=(file.open(fileName,"w")!=null)&&if(existed)if((file.open(fileName,"w")!=null)&&try-catchtry-catch但如果因為參數(shù)錯誤導(dǎo)致中間執(zhí)行回退,或者錯誤,那得不償失。RPC/API/HTTPDAO的代碼傳入?yún)?shù)已經(jīng)做過檢查或者肯
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年綠色供應(yīng)鏈協(xié)同管理實務(wù)
- 2026年會員日促銷方案策劃指南
- 2026福建福州軟件職業(yè)技術(shù)學(xué)院招聘19人備考題庫附答案詳解
- 2026西藏山南加查縣文旅局公益性崗位的招聘1人備考題庫及答案詳解參考
- 計算機(jī)自然語言處理應(yīng)用手冊
- 職業(yè)噪聲心血管疾病的綜合干預(yù)策略優(yōu)化
- 職業(yè)噪聲與心血管疾病環(huán)境暴露評估技術(shù)
- 客戶活動年終總結(jié)范文(3篇)
- 職業(yè)健康檔案電子化數(shù)據(jù)在職業(yè)病科研中的應(yīng)用
- 職業(yè)健康促進(jìn)醫(yī)療成本控制策略
- 2026年無錫工藝職業(yè)技術(shù)學(xué)院單招綜合素質(zhì)考試題庫帶答案解析
- 數(shù)字孿生方案
- 【低空經(jīng)濟(jì)】無人機(jī)AI巡檢系統(tǒng)設(shè)計方案
- 金融領(lǐng)域人工智能算法應(yīng)用倫理與安全評規(guī)范
- 2025年公務(wù)員多省聯(lián)考《申論》題(陜西A卷)及參考答案
- cie1931年標(biāo)準(zhǔn)色度觀測者的光譜色品坐標(biāo)
- per200軟件petrel2009中文版教程
- SB/T 10595-2011清潔行業(yè)經(jīng)營服務(wù)規(guī)范
- JJF 1078-2002光學(xué)測角比較儀校準(zhǔn)規(guī)范
- 新鄉(xiāng)市興華煤礦盡職調(diào)查報告
- GB 1886.215-2016食品安全國家標(biāo)準(zhǔn)食品添加劑白油(又名液體石蠟)
評論
0/150
提交評論