JAVA代碼編寫的30條建議_第1頁
JAVA代碼編寫的30條建議_第2頁
JAVA代碼編寫的30條建議_第3頁
JAVA代碼編寫的30條建議_第4頁
JAVA代碼編寫的30條建議_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、JAVA代碼編寫的30條建議類名首字母應(yīng)當(dāng)大寫。字段、方法以及對(duì)象(句柄)的首字母應(yīng)小寫。對(duì)于全部標(biāo)識(shí)符,其中包含的全部單詞都應(yīng)緊靠在一起,而且大寫中間單詞的首字母。例如:ThisIsAClassNamethisIsMethodOrFieldName假設(shè)在定義中消失了常數(shù)初始化字符,則大寫static final根本類型標(biāo)識(shí)符中的全部字母。這樣便可標(biāo)志出它們屬于編譯期的常數(shù)。Java包(Package)屬于一種特別狀況:它們?nèi)际切懽帜福幢阒虚g的單詞亦是如此。對(duì)于域名擴(kuò)展名稱,如com, org, net或者edu等,全部都應(yīng)小寫(這也是Java 1.1和Java 1.2的區(qū)分之一)。為了

2、常規(guī)用途而創(chuàng)立一個(gè)類時(shí),請(qǐng)實(shí)行“經(jīng)典形式“,并包含對(duì)下述元素的定義:equals()hashCode()toString()clone() (implement Cloneable)implement Serializable對(duì)于自己創(chuàng)立的每一個(gè)類,都考慮置入一個(gè)main(),其中包含了用于測(cè)試那個(gè)類的代碼。為使用一個(gè)工程中的類,我們沒必要?jiǎng)h除測(cè)試代碼。假設(shè)進(jìn)展了任何形式的改動(dòng),可便利地返回測(cè)試。這些代碼也可作為如何使用類的一個(gè)例如使用。應(yīng)將方法設(shè)計(jì)成簡(jiǎn)要的、功能性單元,用它描述和實(shí)現(xiàn)一個(gè)不連續(xù)的類接口局部。抱負(fù)狀況下,方法應(yīng)簡(jiǎn)明扼要。假設(shè)長(zhǎng)度很大,可考慮通過某種方式將其分割成較短的幾個(gè)方法。

3、這樣做也便于類內(nèi)代碼的重復(fù)使用(有些時(shí)候,方法必需特別大,但它們?nèi)詰?yīng)只做同樣的一件事情)。設(shè)計(jì)一個(gè)類時(shí),請(qǐng)?jiān)O(shè)身處地為客戶程序員考慮一下(類的使用方法應(yīng)當(dāng)是特別明確的)。然后,再設(shè)身處地為治理代碼的人考慮一下(估計(jì)有可能進(jìn)展哪些形式的修改,想想用什么方法可把它們變得更簡(jiǎn)潔)。使類盡可能短小精悍,而且只解決一個(gè)特定的問題。下面是對(duì)類設(shè)計(jì)的一些建議: 一個(gè)簡(jiǎn)單的開關(guān)語句:考慮采納“多形“機(jī)制數(shù)量眾多的方法涉及到類型差異極大的操作:考慮用幾個(gè)類來分別實(shí)現(xiàn)很多成員變量在特征上有很大的差異:考慮使用幾個(gè)類讓一切東西都盡可能地私有-private??墒箮斓哪骋痪植俊肮不?一個(gè)方法、類或者一個(gè)字段等等),

4、就永久不能把它拿出。假設(shè)強(qiáng)行拿出,就可能破壞其他人現(xiàn)有的代碼,使他們不得不重新編寫和設(shè)計(jì)。假設(shè)只公布自己必需公布的,就可放心大膽地轉(zhuǎn)變其他任何東西。在多線程環(huán)境中,隱私是特殊重要的一個(gè)因素-只有private字段才能在非同步使用的狀況下受到愛護(hù)。謹(jǐn)惕“巨大對(duì)象綜合癥“。對(duì)一些習(xí)慣于挨次編程思維、且初涉OOP領(lǐng)域的新手,往往喜愛先寫一個(gè)挨次執(zhí)行的程序,再把它嵌入一個(gè)或兩個(gè)巨大的對(duì)象里。依據(jù)編程原理,對(duì)象表達(dá)的應(yīng)當(dāng)是應(yīng)用程序的概念,而非應(yīng)用程序本身。假設(shè)不得已進(jìn)展一些不太雅觀的編程,至少應(yīng)當(dāng)把那些代碼置于一個(gè)類的內(nèi)部。任何時(shí)候只要發(fā)覺類與類之間結(jié)合得特別嚴(yán)密,就需要考慮是否采納內(nèi)部類,從而改善編碼

5、及維護(hù)工作(參見第14章小節(jié)的“用內(nèi)部類改良代碼“)。盡可能細(xì)致地加上解釋,并用javadoc解釋文檔語法生成自己的程序文檔。避開使用“魔術(shù)數(shù)字“,這些數(shù)字很難與代碼很好地協(xié)作。如以后需要修改它,無疑會(huì)成為一場(chǎng)噩夢(mèng),由于根本不知道“100“究竟是指“數(shù)組大小“還是“其他全然不同的東西“。所以,我們應(yīng)創(chuàng)立一個(gè)常數(shù),并為其使用具有說服力的描述性名稱,并在整個(gè)程序中都采納常數(shù)標(biāo)識(shí)符。這樣可使程序更易理解以及更易維護(hù)。涉及構(gòu)建器和特別的時(shí)候,通常盼望重新丟棄在構(gòu)建器中捕獲的任何特別一假如它造成了那個(gè)對(duì)象的創(chuàng)立失敗。這樣一來,調(diào)用者就不會(huì)以為那個(gè)對(duì)象已正確地創(chuàng)立,從而盲目地連續(xù)。當(dāng)客戶程序員用完對(duì)象以后

6、,假設(shè)你的類要求進(jìn)展任何去除工作,可考慮將去除代碼置于一個(gè)良好定義的方法里,采納類似于cleanup。這樣的名字,明確說明自己的用途。除此以外,可在類內(nèi)放置一個(gè)boolean(布爾)標(biāo)記,指出對(duì)象是否已被去除。在類的finalize。方法里,請(qǐng)確定對(duì)象已被去除,并已丟棄了從RuntimeException繼承的一個(gè)類(假如還沒有的話),從而指出一個(gè)編程錯(cuò)誤。在實(shí)行象這樣的方案之前,請(qǐng)確定finalize。能夠在自己的系統(tǒng)中工作(可能需要調(diào)用System.runFinalizersOnExit(true),從而確保這一行為)。在一個(gè)特定的作用域內(nèi),假設(shè)一個(gè)對(duì)象必需去除(非由垃圾收集機(jī)制處理),請(qǐng)

7、采納下述方法:初始化對(duì)象;假設(shè)勝利,則馬上進(jìn)入一個(gè)含有finally從句的try塊,開頭去除工作。假設(shè)在初始化過程中需要掩蓋(取消)finalize。,請(qǐng)記住調(diào)用super.finalize()(假設(shè)Object屬于我們的直接超類,則無此必要)。在對(duì)finalize()進(jìn)展掩蓋的過程中,對(duì)super.finalize()的調(diào)用應(yīng)屬于最終一個(gè)行動(dòng),而不應(yīng)是第一個(gè)行動(dòng),這樣可確保在需要根底類組件的時(shí)候它們依舊有效。創(chuàng)立大小固定的對(duì)象集合時(shí),請(qǐng)將它們傳輸至一個(gè)數(shù)組(假設(shè)預(yù)備從一個(gè)方法里返回這個(gè)集合,更應(yīng)如此操作)。這樣一來,我們就可享受到數(shù)組在編譯期進(jìn)展類型檢查的好處。此外,為使用它們,數(shù)組的接收者

8、或許并不需要將對(duì)象“造型“到數(shù)組里。盡量使用interfaces,不要使用abstract類。假設(shè)已知某樣?xùn)|西預(yù)備成為一個(gè)根底類,那么第一個(gè)選擇應(yīng)是將其變成一個(gè)interface(接口)。只有在不得不使用方法定義或者成員變量的時(shí)候,才需要將其變成一個(gè)abstract (抽象)類。接口主要描述了客戶盼望做什么事情,而一個(gè)類則致力于(或允許)詳細(xì)的實(shí)施細(xì)節(jié)。在構(gòu)建器內(nèi)部,只進(jìn)展那些將對(duì)象設(shè)為正確狀態(tài)所需的工作。盡可能地避開調(diào)用其他方法,由于那些方法可能被其他人掩蓋或取消,從而在構(gòu)建過程中產(chǎn)生不行預(yù)知的結(jié)果(參見第7章的具體說明)。對(duì)象不應(yīng)只是簡(jiǎn)潔地容納一些數(shù)據(jù);它們的行為也應(yīng)得到良好的定義。在現(xiàn)成

9、類的根底上創(chuàng)立新類時(shí),請(qǐng)首先選擇“新建“或“創(chuàng)作“。只有自己的設(shè)計(jì)要求必需繼承時(shí),才應(yīng)考慮這方面的問題。假設(shè)在原來允許新建的場(chǎng)合使用了繼承,則整個(gè)設(shè)計(jì)會(huì)變得沒有必要地簡(jiǎn)單。用繼承及方法掩蓋來表示行為間的差異,而用字段表示狀態(tài)間的區(qū)分。一個(gè)特別極端的例子是通過對(duì)不同類的繼承來表示顏色,這是肯定應(yīng)當(dāng)避開的:應(yīng)直接使用一個(gè)“顏色“字段。為避開編程時(shí)遇到麻煩,請(qǐng)保證在自己類路徑指到的任何地方,每個(gè)名字都僅對(duì)應(yīng)一個(gè)類。否則,編譯器可能先找到同名的另一個(gè)類,并報(bào)告出錯(cuò)消息。假設(shè)疑心自己遇到了類路徑問題,請(qǐng)?jiān)囋囋陬惵窂降拿恳粋€(gè)起點(diǎn),搜尋一下同名的.class文件。在Java 1.1 AWT中使用大事“適配器

10、“時(shí),特殊簡(jiǎn)單遇到一個(gè)陷阱。假設(shè)掩蓋了某個(gè)適配器方法,同時(shí)拼寫方法沒有特殊講究,最終的結(jié)果就是新添加一個(gè)方法,而不是掩蓋現(xiàn)成方法。然而,由于這樣做是完全合法的,所以不會(huì)從編譯器或運(yùn)行期系統(tǒng)獲得任何出錯(cuò)提示一只不過代碼的工作就變得不正常了。用合理的設(shè)計(jì)方案消退“偽功能“。也就是說,假如只需要?jiǎng)?chuàng)立類的一個(gè)對(duì)象,就不要提前限制自己使用應(yīng)用程序,并加上一條“只生成其中一個(gè)“解釋。請(qǐng)考慮將其封裝成一個(gè)“獨(dú)生子“的形式。假設(shè)在主程序里有大量散亂的代碼,用于創(chuàng)立自己的對(duì)象,請(qǐng)考慮接受一種制造性的方案,將些代碼封裝起來。警覺“分析癱瘓“。請(qǐng)記住,無論如何都要提前了解整個(gè)工程的狀況,再去考察其中的細(xì)節(jié)。由于把握

11、了全局,可快速熟悉自己未知的一些因素,防止在考察細(xì)節(jié)的時(shí)候陷入“死規(guī)律“中。警覺“過早優(yōu)化“。首先讓它運(yùn)行起來,再考慮變得更快一但只有在自己必需這樣做、而且經(jīng)證明在某局部代碼中確實(shí)存在一共性能瓶頸的時(shí)候,才應(yīng)進(jìn)展優(yōu)化。除非用特地的工具分析瓶頸,否則很有可能是在鋪張自己的時(shí)間。性能提升的隱含代價(jià)是自己的代碼變得難于理解,而且難于維護(hù)。請(qǐng)記住,閱讀代碼的時(shí)間比寫代碼的時(shí)間多得多。思路清楚的設(shè)計(jì)可獲得易于理解的程序,但解釋、細(xì)致的解釋以及一些例如往往具有不行估量的價(jià)值。無論對(duì)你自己,還是對(duì)后來的人,它們都是相當(dāng)重要的。如對(duì)此仍有疑心,那么請(qǐng)?jiān)囅胱约涸噲D從聯(lián)機(jī)Java文檔里找出有用信息時(shí)遇到的挫折,這樣或許能將你說服。如認(rèn)為自己已進(jìn)展了良好的分析、設(shè)計(jì)或者實(shí)施,那么請(qǐng)略微更換一下思維角度。試試邀請(qǐng)一些外來人士一并不肯定是專家,但可以是來自本公司其他部門的人。請(qǐng)他們用完全新奇的眼光考察你的工作,看看是否能找出你一度熟視無睹的問題。實(shí)行這種方式,往往能在最適合修改的階段找出一些關(guān)鍵性的問題,避開產(chǎn)品發(fā)行后再解決問題而造成的金錢及精力方面的

溫馨提示

  • 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)論