JAVA進(jìn)行式
          讓我們把JAVA進(jìn)行到底!
          posts - 13,comments - 21,trackbacks - 0
                   今天把以前收集的“java  編碼規(guī)范”找出來讀一讀,寫了幾個月代碼了,雖然零零星星知道一些關(guān)于java的編碼規(guī)范,可是不是很系統(tǒng),昨天看到組員寫的代碼,直觀感覺上很不舒服,覺得寫得很不符合編碼規(guī)范,看上去不好看,閱讀起來很困難,想給他講一講,突然意識到自己也不是很說的清楚,OK,來看看人家是怎么闡述這個編碼規(guī)范問題吧!         
                   那么什么是編碼規(guī)范呢?
                   編碼規(guī)范就是使用一種語言編寫代碼時,要遵守的一些約定俗成,或是長期經(jīng)驗(yàn)總結(jié)而成的規(guī)矩,這些規(guī)矩并不是一定要執(zhí)行的,也就是說,不執(zhí)行它,程序照樣能編譯通過,照樣能運(yùn)行起來,那么我們?yōu)槭裁匆プ袷厮兀窟@是因?yàn)槲覀兙帉懙某绦虿⒉粌H僅是只給自己一個人看的,在現(xiàn)代軟件開發(fā)中,往往是由多個人共同完成軟件的開發(fā)工作,由一個人獨(dú)立完成大型軟件的開發(fā)工作,幾乎是不可能的。而且在軟件開發(fā)完成,進(jìn)入到軟件維護(hù)階段后,對軟件的維護(hù)工作也很可能是由其他人員來進(jìn)行。那么,編寫出的代碼就需要多個人去閱讀。如果每個人都按照自己的習(xí)慣去寫代碼,就會給其他讀代碼的人造成很大的困擾,從而影響他對程序的理解、判斷,影響他對程序的所進(jìn)行的維護(hù)和改進(jìn)工作。那么有了編碼規(guī)范,大家都遵循統(tǒng)一的規(guī)范去做,就會大大提高代碼的可讀性,使開發(fā)人員能夠迅速而徹底的理解代碼,從而提高工作效率。另外,遵守編碼規(guī)范對于我們編寫代碼的人來說,也是有利的,隨著程序的復(fù)雜程度的加深,我們所編寫的代碼行逐步增多,如果沒有在一開始嚴(yán)格遵守規(guī)范,而是隨性編寫,那么在后期也會對我們自己閱讀代碼造成影響,而且更為嚴(yán)重的是,降低了代碼的健壯性,使代碼變得容易出錯,而不易維護(hù)了。
                   基于上述原因,做為一個合格程序員,嚴(yán)格遵守編碼規(guī)范是基本條件。
                   先來說說“程序編寫規(guī)范”,實(shí)際上這個標(biāo)題是“java編碼規(guī)范”的第一章節(jié)的標(biāo)題,看了內(nèi)容,感覺不太恰當(dāng),可是一時又不知道改什么名好,就照著他的來吧。
                   1、exit() 除了在 main() 中可以被調(diào)用外,其他的地方不應(yīng)該被調(diào)用。
                   這樣做是因?yàn)椴唤o任何代碼截獲退出的機(jī)會。比如,一個類似后臺服務(wù)的程序不應(yīng)該因?yàn)槟骋粋€庫模塊決定了要退出就退出。
                   2、聲明的錯誤應(yīng)該拋出一個RuntimeException或者其派生的異常。頂層的main()函數(shù)應(yīng)該截獲所有的異常,并且打印(或者記錄在日志中)在屏幕上。 
                   3、java使用成熟的后臺垃圾收集技術(shù)來代替引用計(jì)數(shù)。但是,請記住,java的垃圾收集技術(shù)只會對內(nèi)存中的“垃圾”進(jìn)行清理,而不會對其他資源,諸如:數(shù)據(jù)庫、磁盤、打印機(jī)等進(jìn)行清理工作。因此你必須在使用完這些對象的實(shí)例以后進(jìn)行清場工作。比如:
                   FileOutputStream fos = new FileOutputStream(projectFile);
                   project.save(fos, "IDE Project File"); 
                   fos.close();      //對文件輸出流對象進(jìn)行關(guān)閉(清場工作)
                   4、Clone下面是一種有用的方法:
                  implements Cloneable
                  public  Object clone()
                  {
                      try 
                      {
                           ThisClass obj = (ThisClass)super.clone();
                           obj.field1 = (int[])field1.clone();
                           obj.field2 = field2;
                           return obj;
                      } 
                      catch(CloneNotSupportedException e) 
                      {
                           throw new InternalError("Unexpected CloneNotSUpportedException: " + e.getMessage());
                      }
                   }
                   這里……我不太看得明白他所寫的意思,對于clone()方法我大概知道它是java的根類Object中的一個方法,其作用是創(chuàng)建并返回一個當(dāng)前對象的拷貝,即是“克隆”一個和當(dāng)前對象一模一樣的另一個對象。那么Cloneable是什么?查了API幫助,知道了,Cloneable是一個接口,只有實(shí)現(xiàn)了這個Cloneable接口的類的實(shí)例才可以用繼承自O(shè)bject類的clone()方法進(jìn)行“克隆”,沒有實(shí)現(xiàn)這個接口的類的實(shí)例若調(diào)用clone()方法,則會拋出“CloneNotSupportedException”異常。不過,好奇怪,查看了它的源代碼,僅僅有一個接口名字,沒有聲明任何的方法或是常量,基本類庫中為什么會有這樣一個接口哩?既然所有的類都直接或間接繼承自O(shè)bject類,那為什么還要用一個Cloneable接口來限制其子類能否進(jìn)行“克隆”操作哩?現(xiàn)在還弄不明白。
                  
           3、final 類,絕對不要因?yàn)樾阅艿脑驅(qū)㈩惗x為 final 的(除非程序的框架要求)。
                   最好在類文檔中注明一個類目前不能被繼承,而不要將它定義為 final 的。因?yàn)闆]有人可以保證會不會由于什么原因需要繼承它。(那么,盡量少用final類,呵呵,到目前為止我還沒用到過final類,真想知道什么時候一定會用到final類,好象沒有地方需要呀)
                    4、訪問類的成員變量,大部分的類成員變量應(yīng)該定義為 protected 的來防止繼承類使用他們。
                    這里……我又不明白了,記得學(xué)java的訪問權(quán)限修飾符時,protected修飾的類成員,僅在類內(nèi)和類的派生類中可見,把類成員定義為protected,怎么能夠防止繼承類(派生類)使用哩?如果定義為private,才可能不被繼承類使用吧?
          我錯了嗎?
                   5、對于數(shù)組的聲明,要用“int[] packets”,而不是“int packets[]”,后一種永遠(yuǎn)也不要用。
                   這個……,對于后一種,java中好象沒有硬性規(guī)定不可以用
          (C#中倒是只承認(rèn)前一種聲明數(shù)組的形式),但寫成前一種形式,更具意義一些。
          posted on 2005-12-11 15:58 水秀清靈 閱讀(426) 評論(0)  編輯  收藏 所屬分類: 學(xué)習(xí)筆記
          主站蜘蛛池模板: 遂宁市| 高雄市| 镇巴县| 舒城县| 车险| 彭水| 临沭县| 南涧| 宿州市| 丘北县| 娄烦县| 沂源县| 江安县| 温泉县| 乌拉特中旗| 绥江县| 华安县| 黑河市| 福建省| 榆社县| 乌鲁木齐市| 鹤岗市| 乃东县| 资溪县| 涟水县| 竹北市| 监利县| 巨鹿县| 盐池县| 永安市| 扎囊县| 铁岭市| 南丰县| 汶川县| 丹寨县| 常州市| 龙泉市| 分宜县| 合肥市| 徐汇区| 托克托县|