




已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
命名規(guī)范定義這個規(guī)范的目的是讓項目中所有的文檔都看起來像一個人寫的,增加可讀性,減少項目組中因為換人而帶來的損失。(這些規(guī)范并不是一定要絕對遵守,但是一定要讓程序有良好的可讀性)Package的命名Package的名字應該都是由一個小寫單詞組成。Class的命名Class的名字必須由大寫字母開頭而其他字母都小寫的單詞組成Class變量的命名變量的名字必須用一個小寫字母開頭。后面的單詞用大寫字母開頭。StaticFinal變量的命名StaticFinal變量的名字應該都大寫,并且指出完整含義。參數(shù)的命名參數(shù)的名字必須和變量的命名規(guī)范一致。數(shù)組的命名數(shù)組應該總是用下面的方式來命名:bytebuffer;而不是:bytebuffer;方法的參數(shù)使用有意義的參數(shù)命名,如果可能的話,使用和要賦值的字段一樣的名字:SetCounter(intsize)this.size=size;Java文件樣式所有的Java(*.java)文件都必須遵守如下的樣式規(guī)則版權信息版權信息必須在java文件的開頭,比如:/*Copyright®2000ShanghaiXXXCo.Ltd.*Allrightreserved.*/其他不需要出現(xiàn)在javadoc的信息也可以包含在這里。Package/Importspackage行要在import行之前,import中標準的包名要在本地的包名之前,而且按照字母順序排列。如果import行中包含了同一個包中的不同子目錄,則應該用*來處理。.stats;importjava.io.*;importjava.util.Observable;importhotlava.util.Application;這里java.io.*使用來代替InputStreamandOutputStream的。Class接下來的是類的注釋,一般是用來解釋類的。/*Aclassrepresentingasetofpacketandbytecounters*Itisobservabletoallowittobewatched,butonly*reportschangeswhenthecurrentsetiscomplete*/接下來是類定義,包含了在不同的行的extends和implementspublicclassCounterSetextendsObservableimplementsCloneableClassFields接下來是類的成員變量:/*Packetcounters*/protectedintpackets;public的成員變量必須生成文檔(JavaDoc)。proceted、private和package定義的成員變量如果名字含義明確的話,可以沒有注釋。存取方法接下來是類變量的存取的方法。它只是簡單的用來將類的變量賦值獲取值的話,可以簡單的寫在一行上。/*Getthecounters*returnanarraycontainingthestatisticaldata.Thisarrayhasbeen*freshlyallocatedandcanbemodifiedbythecaller.*/publicintgetPackets()returncopyArray(packets,offset);publicintgetBytes()returncopyArray(bytes,offset);publicintgetPackets()returnpackets;publicvoidsetPackets(intpackets)this.packets=packets;其它的方法不要寫在一行上。構造函數(shù)接下來是構造函數(shù),它應該用遞增的方式寫(比如:參數(shù)多的寫在后面)。訪問類型(public,private等.)和任何static,final或synchronized應該在一行中,并且方法和參數(shù)另寫一行,這樣可以使方法和參數(shù)更易讀。publicCounterSet(intsize)this.size=size;克隆方法如果這個類是可以被克隆的,那么下一步就是clone方法:publicObjectclone()tryCounterSetobj=(CounterSet)super.clone();obj.packets=(int)packets.clone();obj.size=size;returnobj;catch(CloneNotSupportedExceptione)thrownewInternalError(UnexpectedCloneNotSUpportedException:+e.getMessage();類方法下面開始寫類的方法:/*Setthepacketcounters*(suchaswhenrestoringfromadatabase)*/protectedfinalvoidsetArray(intr1,intr2,intr3,intr4)throwsIllegalArgumentException/Ensurethearraysareofequalsize/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方法無論如何,每一個類都應該定義toString方法:publicStringtoString()Stringretval=CounterSet:;for(inti=0;i0)i+;/錯誤,和在同一行if(i0)i+;/正確,單獨作為一行語句永遠單獨作為一行.如果語句應該縮進到與其相對應的那一行相對齊的位置。括號左括號和后一個字符之間不應該出現(xiàn)空格,同樣,右括號和前一個字符之間也不應該出現(xiàn)空格.下面的例子說明括號和空格的錯誤及正確使用:CallProc(AParameter);/錯誤CallProc(AParameter);/正確不要在語句中使用無意義的括號.括號只應該為達到某種目的而出現(xiàn)在源代碼中。下面的例子說明錯誤和正確的用法:if(I)=42)/錯誤-括號毫無意義if(I=42)or(J=42)then/正確-的確需要括號程序編寫規(guī)范exit()exit除了在main中可以被調用外,其他的地方不應該調用。因為這樣做不給任何代碼代碼機會來截獲退出。一個類似后臺服務地程序不應該因為某一個庫模塊決定了要退出就退出。分享:如何在Spring中使用AOPAOP正在成為軟件開發(fā)的下一個圣杯。使用AOP,你可以將處理aspect的代碼注入主程序,通常主程序的主要目的并不在于處理這些aspect。AOP可以防止代碼混亂。 為了理解AOP如何做到這點,考慮一下記日志的工作。日志本身不太可能是你開發(fā)的主程序的主要任務。如果異常申明的錯誤應該拋出一個RuntimeException或者派生的異常。頂層的main()函數(shù)應該截獲所有的異常,并且打印(或者記錄在日志中)在屏幕上。垃圾收集JAVA使用成熟的后臺垃圾收集技術來代替引用計數(shù)。但是這樣會導致一個問題:你必須在使用完對象的實例以后進行清場工作。比如一個prel的程序員可能這么寫:.FileOutputStreamfos=newFileOutputStream(projectFile);project.save(fos,IDEProjectFile);.除非輸出流一出作用域就關閉,非引用計數(shù)的程序語言,比如JAVA,是不能自動完成變量的清場工作的。必須象下面一樣寫:FileOutputStreamfos=newFileOutputStream(projectFile);project.save(fos,IDEProjectFile);fos.close();Clone下面是一種有用的方法:implementsCloneablepublicObjectclone()tryThisClassobj=(ThisClass)super.clone();obj.field1=(int)field1.clone();obj.field2=field2;returnobj;catch(CloneNotSupportedExceptione)thrownewInternalError(UnexpectedCloneNotSUpportedException:+e.getMessage();final類絕對不要因為性能的原因將類定義為final的(除非程序的框架要求)如果一個類還沒有準備好被繼承,最好在類文檔中注明,而不要將她定義為final的。這是因為沒有人可以保證會不會由于什么原因需要繼承她。訪問類的成員變量大部分的類成員變量應該定義為protected的來防止繼承類使用他們。注意,要用intpackets,而不是intpackets,后一種永遠也不要用。publicvoidsetPackets(intpackets)this.packets=packets;CounterSet(intsize)this.size=size;編程技巧byte數(shù)組轉換到characters為了將byte數(shù)組轉換到characters,你可以這么做:Helloworld!.getBytes();Utility類Utility類(僅僅提供方法的類)應該被申明為抽象的來防止被繼承或被初始化。初始化下面的代碼是一種很好的初始化數(shù)組的方法:objectArguments=newObjectarguments;枚舉類型JAVA對枚舉的支持不好,但是下面的代碼是一種很有用的模板: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);這種技術實現(xiàn)了RED,GREEN,BLUE等可以象其他語言的枚舉類型一樣使用的常量。他們可以用=操作符來比較。但是這樣使用有一個缺陷:如果一個用戶用這樣的方法來創(chuàng)建顏色BLACKnewColour(0,0,0)那么這就是另外一個對象,=操作符就會產(chǎn)生錯誤。她的equal()方法仍然有效。由于這個原因,這個技術的缺陷最好注明在文檔中,或者只在自己的包中使用。Swing避免使用AWT組件混合使用AWT和Swing組件如果要將AWT組件和Swing組件混合起來使用的話,請小心使用。實際上,盡量不要將他們混合起來使用。滾動的AWT組件AWT組件絕對不要用JscrollPane類來實現(xiàn)滾動。滾動AWT組件的時候一定要用AWTScrollPane組件來實現(xiàn)。避免在InternalFrame組件中使用AWT組件盡量不要這么做,要不然會出現(xiàn)不可預料的后果。Z-Order問題AWT組件總是顯示在Swing組件之上。當使用包含AWT組件的POP-UP菜單的時候要小心,盡量不要這樣使用。調試調試在軟件開發(fā)中是一個很重要的部分,存在軟件生命周期的各個部分中。調試能夠用配置開、關是最基本的。很常用的一種調試方法就是用一個PrintStream類成員,在沒有定義調試流的時候就為null,類要定義一個debug方法來設置調試用的流。性能在寫代碼的時候,從頭至尾都應該考慮性能問題。這不是說時間都應該浪費在優(yōu)化代碼上,而是我們時刻應該提醒自己要注意代碼的效率。比如:如果沒有時間來實現(xiàn)一個高效的算法,那么我們應該在文檔中記錄下來,以便在以后有空的時候再來實現(xiàn)她。不是所有的人都同意在寫代碼的時候應該優(yōu)化性能這個觀點的,他們認為性能優(yōu)化的問題應該在項目的后期再去考慮,也就是在程序的輪廓已經(jīng)實現(xiàn)了以后。不必要的對象構造不要在循環(huán)中構造和釋放對象使用StringBuffer對象在處理String的時候要盡量使用StringBuffer類,StringBuffer類是構成String類的基礎。String類將StringBuffer類封裝了起來,(以花費更多時間為代價)為開發(fā)人員提供了一個安全的接口。當我們在構造字符串的時候,我們應該用StringBuffer來實現(xiàn)大部分的工作,當工作完成后將StringBuffer對象再轉換為需要的String對象。比如:如果有一個字符串必須不斷地在其后添加許多字符來完成構造,那么我們應該使用StringBuffer對象和她的append()方法。如果我們用String對象代替StringBuffer對象的話,會花費許多不必要的創(chuàng)建和釋放對象的CPU時間。避免太多的使用synchronized關鍵字避免不必要的使用關鍵字synchronized,應該在必要的時候再使用她,這是一個避免死鎖的好方法??梢浦残訠orlandJbulider不喜歡synchronized這個關鍵字,如果你的斷點設在這些關鍵字的作用域內(nèi)的話,調試的時候你會發(fā)現(xiàn)的斷點會到處亂跳,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 施工安全責任書范文五
- 鞋廠消防應急預案
- 網(wǎng)絡安全工作信息簡報
- 化工企業(yè)安全事故心得體會
- 安全生產(chǎn)組織架構及職責
- 貴州建筑安全生產(chǎn)許可證代辦
- 日立mca電梯故障代碼表
- 電力安全生產(chǎn)標準化
- 幼兒園交通安全活動方案總結
- 2025年安全生產(chǎn)月活動主持詞
- 天門山污水處理廠二期擴建項目環(huán)境影響報告書
- 婦產(chǎn)科學 妊娠合并心臟病
- -衛(wèi)生資格-副高-疾病控制-副高-章節(jié)練習-慢性非傳染性疾病控制-試題(單選題)(共1125題)
- 骨質疏松病人的護理
- 高中英語全國高考考綱詞匯3600匯總
- GB/T 35068-2018油氣管道運行規(guī)范
- GB/T 13277.7-2021壓縮空氣第7部分:活性微生物含量測量方法
- 2023年婁底冷水江市廣播電視臺(融媒體中心)招聘筆試模擬試題及答案解析
- 特勞特戰(zhàn)略定位總裁課程課件
- 陳寶光-TTT課程開發(fā)與設計(講義)V2.1
- 六年級開學主題班會課件
評論
0/150
提交評論