




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、JAVA編程規(guī)范命名規(guī)范如下定義這個(gè)規(guī)范的目的是讓項(xiàng)目中所有的文檔都看起來(lái)像一個(gè)人寫(xiě)的,增加可讀性,減少項(xiàng)目組中因?yàn)閾Q人而帶來(lái)的損失。Package的命名Package的名字應(yīng)該都是由一個(gè)小寫(xiě)單詞組成。Class的命名Class的名字必須由大寫(xiě)字母開(kāi)頭而其他字母都小寫(xiě)的單詞組成Class變量的命名變量的名字必須用一個(gè)小寫(xiě)字母開(kāi)頭。后面的單詞用大寫(xiě)字母開(kāi)頭。StaticFinal變量的命名StaticFinal變量的名字應(yīng)該都大寫(xiě),并且指出完整含義。參數(shù)的命名參數(shù)的名字必須和變量的命名規(guī)范一致。數(shù)組的命名數(shù)組應(yīng)該總是用下面的方式來(lái)命名:bytebuffer;而不是:bytebuffer;方法的參
2、數(shù)使用有意義的參數(shù)命名,如果可能的話,使用和要賦值的字段一樣的名字:SetCounter(intsize)this.size=size;Java文件樣式所有的Java(*.java)文件都必須遵守如下的樣式規(guī)則版權(quán)信息版權(quán)信息必須在java文件的開(kāi)頭,比如:/*Copyright2000ShanghaiXXXCo.Ltd.*Allrightreserved.*/其他不需要出現(xiàn)在javadoc的信息也可以包含在這里。Package/Importspackage行要在import行之前,import中標(biāo)準(zhǔn)的包名要在本地的包名之前,而且按照字母順序排列。如果import行中包含了同一個(gè)包中的不同子目
3、錄,則應(yīng)該用*來(lái)處理。.stats;importjava.io.*;importjava.util.Observable;importhotlava.util.Application;這里java.io.*使用來(lái)代替InputStreamandOutputStream的。Class接下來(lái)的是類(lèi)的注釋,一般是用來(lái)解釋類(lèi)的。/*Aclassrepresentingasetofpacketandbytecounters*Itisobservabletoallowittobewatched,butonly*reportschangeswhenthecurrentsetiscomplete*/接下來(lái)是類(lèi)
4、定義,包含了在不同的行的extends和implementspublicclassCounterSetextendsObservableimplementsCloneableClassFields接下來(lái)是類(lèi)的成員變量:/*Packetcounters*/protectedintpackets;public的成員變量必須生成文檔(JavaDoc)。proceted、private和package定義的成員變量如果名字含義明確的話,可以沒(méi)有注釋。存取方法接下來(lái)是類(lèi)變量的存取的方法。它只是簡(jiǎn)單的用來(lái)將類(lèi)的變量賦值獲取值的話,可以簡(jiǎn)單的寫(xiě)在一行上。/*Getthecounters*returnanar
5、raycontainingthestatisticaldata.Thisarrayhasbeen*freshlyallocatedandcanbemodifiedbythecaller.*/publicintgetPackets()returncopyArray(packets,offset);publicintgetBytes()returncopyArray(bytes,offset);publicintgetPackets()returnpackets;publicvoidsetPackets(intpackets)this.packets=packets;其它的方法不要寫(xiě)在一行上構(gòu)造函
6、數(shù)接下來(lái)是構(gòu)造函數(shù),它應(yīng)該用遞增的方式寫(xiě)(比如:參數(shù)多的寫(xiě)在后面)。訪問(wèn)類(lèi)型(public,private等.)和任何static,final或synchronized應(yīng)該在一行中,并且方法和參數(shù)另寫(xiě)一行,這樣可以使方法和參數(shù)更易讀。publicCounterSet(intsize)this.size=size;克隆方法如果這個(gè)類(lèi)是可以被克隆的,那么下一步就是clone方法:publicObjectclone()tryCounterSetobj=(CounterSet)super.clone();obj.packets=(int)packets.clone();obj.size=size;re
7、turnobj;catch(CloneNotSupportedExceptione)thrownewInternalError(UnexpectedCloneNotSUpportedException:+e.getMessage();類(lèi)方法下面開(kāi)始寫(xiě)類(lèi)的方法:/*Setthepacketcounters*(suchaswhenrestoringfromadatabase)*/protectedfinalvoidsetArray(intr1,intr2,intr3,intr4)throwsIllegalArgumentException/Ensurethearraysareofequalsize
8、/if(r1.length!=r2.length|r1.length!=r3.length|r1.length!=r4.length)thrownewIllegalArgumentException(Arraysmustbeofthesamesize);System.arraycopy(r1,0,r3,0,r1.length);System.arraycopy(r2,0,r4,0,r1.length);toString方法無(wú)論如何,每一個(gè)類(lèi)都應(yīng)該定義toString方法:publicStringtoString()Stringretval=CounterSet:;for(inti=0;i0)i
9、+;/錯(cuò)誤,和在同一行if(i0)i+;/正確,單獨(dú)作為一行語(yǔ)句永遠(yuǎn)單獨(dú)作為一行.如果語(yǔ)句應(yīng)該縮進(jìn)到與其相對(duì)應(yīng)的那一行相對(duì)齊的位置。括號(hào)左括號(hào)和后一個(gè)字符之間不應(yīng)該出現(xiàn)空格,同樣,右括號(hào)和前一個(gè)字符之間也不應(yīng)該出現(xiàn)空格.下面的例子說(shuō)明括號(hào)和空格的錯(cuò)誤及正確使用:CallProc(AParameter);/錯(cuò)誤CallProc(AParameter);/正確不要在語(yǔ)句中使用無(wú)意義的括號(hào).括號(hào)只應(yīng)該為達(dá)到某種目的而出現(xiàn)在源代碼中。下面的例子說(shuō)明錯(cuò)誤和正確的用法:if(I)=42)/錯(cuò)誤-括號(hào)毫無(wú)意義if(I=42)or(J=42)then/正確-的確需要括號(hào)程序編寫(xiě)規(guī)范exit()exit除了在m
10、ain中可以被調(diào)用外,其他的地方不應(yīng)該調(diào)用。因?yàn)檫@樣做不給任何代碼代碼機(jī)會(huì)來(lái)截獲退出。一個(gè)類(lèi)似后臺(tái)服務(wù)地程序不應(yīng)該因?yàn)槟骋粋€(gè)庫(kù)模塊決定了要退出就退出。異常申明的錯(cuò)誤應(yīng)該拋出一個(gè)RuntimeException或者派生的異常。頂層的main()函數(shù)應(yīng)該截獲所有的異常,并且打?。ɑ蛘哂涗浽谌罩局校┰谄聊簧?。垃圾收集JAVA使用成熟的后臺(tái)垃圾收集技術(shù)來(lái)代替引用計(jì)數(shù)。但是這樣會(huì)導(dǎo)致一個(gè)問(wèn)題:你必須在使用完對(duì)象的實(shí)例以后進(jìn)行清場(chǎng)工作。比如一個(gè)prel的程序員可能這么寫(xiě):.FileOutputStreamfos=newFileOutputStream(projectFile);project.save(f
11、os,IDEProjectFile);.除非輸出流一出作用域就關(guān)閉,非引用計(jì)數(shù)的程序語(yǔ)言,比如JAVA,是不能自動(dòng)完成變量的清場(chǎng)工作的。必須象下面一樣寫(xiě):FileOutputStreamfos=newFileOutputStream(projectFile);project.save(fos,IDEProjectFile);fos.close();Clone下面是一種有用的方法:implementsCloneablepublicObjectclone()tryThisClassobj=(ThisClass)super.clone();obj.field1=(int)field1.clone()
12、;obj.field2=field2;returnobj;catch(CloneNotSupportedExceptione)thrownewInternalError(UnexpectedCloneNotSUpportedException:+e.getMessage();final類(lèi)絕對(duì)不要因?yàn)樾阅艿脑驅(qū)㈩?lèi)定義為final的(除非程序的框架要求)如果一個(gè)類(lèi)還沒(méi)有準(zhǔn)備好被繼承,最好在類(lèi)文檔中注明,而不要將她定義為final的。這是因?yàn)闆](méi)有人可以保證會(huì)不會(huì)由于什么原因需要繼承她。訪問(wèn)類(lèi)的成員變量大部分的類(lèi)成員變量應(yīng)該定義為protected的來(lái)防止繼承類(lèi)使用他們。注意,要用intpacket
13、s,而不是intpackets,后一種永遠(yuǎn)也不要用。publicvoidsetPackets(intpackets)this.packets=packets;CounterSet(intsize)this.size=size;編程技巧byte數(shù)組轉(zhuǎn)換到characters為了將byte數(shù)組轉(zhuǎn)換到characters,你可以這么做:Helloworld!.getBytes();Utility類(lèi)Utility類(lèi)(僅僅提供方法的類(lèi))應(yīng)該被申明為抽象的來(lái)防止被繼承或被初始化。初始化下面的代碼是一種很好的初始化數(shù)組的方法:objectArguments=newObjectarguments;枚舉類(lèi)型JA
14、VA對(duì)枚舉的支持不好,但是下面的代碼是一種很有用的模板:classColourpublicstaticfinalColourBLACK=newColour(0,0,0);publicstaticfinalColourRED=newColour(0xFF,0,0);publicstaticfinalColourGREEN=newColour(0,0xFF,0);publicstaticfinalColourBLUE=newColour(0,0,0xFF);publicstaticfinalColourWHITE=newColour(0xFF,0xFF,0xFF);這種技術(shù)實(shí)現(xiàn)了RED,GREEN
15、,BLUE等可以象其他語(yǔ)言的枚舉類(lèi)型一樣使用的常量。他們可以用=操作符來(lái)比較。但是這樣使用有一個(gè)缺陷:如果一個(gè)用戶用這樣的方法來(lái)創(chuàng)建顏色BLACKnewColour(0,0,0)那么這就是另外一個(gè)對(duì)象,=操作符就會(huì)產(chǎn)生錯(cuò)誤。她的equal()方法仍然有效。由于這個(gè)原因,這個(gè)技術(shù)的缺陷最好注明在文檔中,或者只在自己的包中使用。Swing避免使用AWT組件混合使用AWT和Swing組件如果要將AWT組件和Swing組件混合起來(lái)使用的話,請(qǐng)小心使用。實(shí)際上,盡量不要將他們混合起來(lái)使用。滾動(dòng)的AWT組件AWT組件絕對(duì)不要用JscrollPane類(lèi)來(lái)實(shí)現(xiàn)滾動(dòng)。滾動(dòng)AWT組件的時(shí)候一定要用AWTScrol
16、lPane組件來(lái)實(shí)現(xiàn)。避免在InternalFrame組件中使用AWT組件盡量不要這么做,要不然會(huì)出現(xiàn)不可預(yù)料的后果。Z-Order問(wèn)題AWT組件總是顯示在Swing組件之上。當(dāng)使用包含AWT組件的POP-UP菜單的時(shí)候要小心,盡量不要這樣使用。調(diào)試調(diào)試在軟件開(kāi)發(fā)中是一個(gè)很重要的部分,存在軟件生命周期的各個(gè)部分中。調(diào)試能夠用配置開(kāi)、關(guān)是最基本的。很常用的一種調(diào)試方法就是用一個(gè)PrintStream類(lèi)成員,在沒(méi)有定義調(diào)試流的時(shí)候就為null,類(lèi)要定義一個(gè)debug方法來(lái)設(shè)置調(diào)試用的流。性能在寫(xiě)代碼的時(shí)候,從頭至尾都應(yīng)該考慮性能問(wèn)題。這不是說(shuō)時(shí)間都應(yīng)該浪費(fèi)在優(yōu)化代碼上,而是我們時(shí)刻應(yīng)該提醒自己要注
17、意代碼的效率。比如:如果沒(méi)有時(shí)間來(lái)實(shí)現(xiàn)一個(gè)高效的算法,那么我們應(yīng)該在文檔中記錄下來(lái),以便在以后有空的時(shí)候再來(lái)實(shí)現(xiàn)她。不是所有的人都同意在寫(xiě)代碼的時(shí)候應(yīng)該優(yōu)化性能這個(gè)觀點(diǎn)的,他們認(rèn)為性能優(yōu)化的問(wèn)題應(yīng)該在項(xiàng)目的后期再去考慮,也就是在程序的輪廓已經(jīng)實(shí)現(xiàn)了以后。不必要的對(duì)象構(gòu)造不要在循環(huán)中構(gòu)造和釋放對(duì)象使用StringBuffer對(duì)象在處理String的時(shí)候要盡量使用StringBuffer類(lèi),StringBuffer類(lèi)是構(gòu)成String類(lèi)的基礎(chǔ)。String類(lèi)將StringBuffer類(lèi)封裝了起來(lái),(以花費(fèi)更多時(shí)間為代價(jià))為開(kāi)發(fā)人員提供了一個(gè)安全的接口。當(dāng)我們?cè)跇?gòu)造字符串的時(shí)候,我們應(yīng)該用Strin
18、gBuffer來(lái)實(shí)現(xiàn)大部分的工作,當(dāng)工作完成后將StringBuffer對(duì)象再轉(zhuǎn)換為需要的String對(duì)象。比如:如果有一個(gè)字符串必須不斷地在其后添加許多字符來(lái)完成構(gòu)造,那么我們應(yīng)該使用StringBuffer對(duì)象和她的append()方法。如果我們用String對(duì)象代替StringBuffer對(duì)象的話,會(huì)花費(fèi)許多不必要的創(chuàng)建和釋放對(duì)象的CPU時(shí)間。避免太多的使用synchronized關(guān)鍵字避免不必要的使用關(guān)鍵字synchronized,應(yīng)該在必要的時(shí)候再使用她,這是一個(gè)避免死鎖的好方法。可移植性BorlandJbulider不喜歡synchronized這個(gè)關(guān)鍵字,如果你的斷點(diǎn)設(shè)在這些關(guān)鍵字的作用域內(nèi)的話,調(diào)試的時(shí)候你會(huì)發(fā)現(xiàn)的斷點(diǎn)會(huì)到處亂跳,讓你不知所措。除非
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 朝陽(yáng)師范高等??茖W(xué)校《學(xué)校心理危機(jī)干預(yù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 杭州電子科技大學(xué)《衛(wèi)生財(cái)務(wù)管理》2023-2024學(xué)年第二學(xué)期期末試卷
- 系統(tǒng)配置更改后的驗(yàn)證恢復(fù)
- 大連商務(wù)職業(yè)學(xué)院《英語(yǔ)教師課堂用語(yǔ)》2023-2024學(xué)年第二學(xué)期期末試卷
- 數(shù)據(jù)加密傳輸保護(hù)實(shí)施方法
- 合肥共達(dá)職業(yè)技術(shù)學(xué)院《寶石資源及礦床》2023-2024學(xué)年第二學(xué)期期末試卷
- 2024-2025學(xué)年保定市安國(guó)市數(shù)學(xué)四下期末學(xué)業(yè)質(zhì)量監(jiān)測(cè)試題含解析
- 鄭州黃河護(hù)理職業(yè)學(xué)院《服裝工藝與結(jié)構(gòu)》2023-2024學(xué)年第二學(xué)期期末試卷
- 物業(yè)服務(wù)合同范本
- 2025屆禮泉縣數(shù)學(xué)四下期末監(jiān)測(cè)試題含解析
- HG∕T 3792-2014 交聯(lián)型氟樹(shù)脂涂料
- 《自貢市國(guó)土空間總體規(guī)劃(2021-2035年)》
- 人工智能訓(xùn)練師考核模塊需求說(shuō)明
- 跨文化管理案例
- 北師大版七年級(jí)上冊(cè)數(shù)學(xué)《基本平面圖形》單元作業(yè)設(shè)計(jì)
- 古村落鄉(xiāng)村文化旅游古鎮(zhèn)旅游外文文獻(xiàn)翻譯2014年
- 2024年臺(tái)州椒江中考二模英語(yǔ)試題含答案
- 四年級(jí)語(yǔ)文閱讀理解十篇(含答案)
- 加工中心操作規(guī)程培訓(xùn)
- 大學(xué)英語(yǔ)四級(jí)考試高頻詞匯1500
- 高速公路工程施工安全標(biāo)準(zhǔn)化指南
評(píng)論
0/150
提交評(píng)論