冷面閻羅

          低調(diào)做人&&高調(diào)做事
          隨筆 - 208, 文章 - 3, 評論 - 593, 引用 - 0
          數(shù)據(jù)加載中……

          【轉(zhuǎn)】我本人一直以來在犯的錯誤

           也許你是只老鳥,也許你的程序編的很精,但是,在你的程序生活,你也許沒有注意到一些“常識性”的問題,因為有些時候我們不需要去注意,我們的程序照樣能夠運行得飛快,但是如果那天有一個無聊的人問你一個像這樣的問題,本來他是非常崇拜你的,可是因為你的一個疏忽就從他的心理掉價了。呵呵,開個玩筆,有一些東西我們還真的不得不注意,因為說不定我們那天就在這個小溝里翻了。

              我個人也是個CODER,一直被外界的一些花哨的東西所忽悠著,一直就沒有心來看這些書,大致一翻,都懂,沒有什么看的。但是,懂是懂的,可是有很多的所以然,還真的說不出來。
          1、Java里面默認值的誤解:

          這個不是SUN公司的錯,怪只怪我們沒有仔細看文檔,因為我們所看的書中都可能是這樣的說“如果沒有分配值,系統(tǒng)會為變量自動分配置默認值”,我們就信以為真了,有些地方也確實是行得通的,在有時編程的時候也遇到?jīng)]有賦值就編譯通示過的提示,也沒有多去想。這個所說的默認值是指類成員變量在沒有賦值的時候會賦以默認值,其它局部變量是不能夠享受這種待遇的。這下懂了吧,為什么會出錯了,這里一定要給以初使值才行。
           
          2、很少使用接口
          當(dāng)然這不是說我有這處毛病,你們就有,我只是說我自己,以免在黑暗中被拍了磚頭@。至少我相信有一大部朋友是這樣的,拿到一個東西,就直接在類里面去實現(xiàn),因為為什么呢?沒有必要嗎,為什么要去多寫一個接口呢,這不是明擺著給自己找麻煩嗎?
              
                
          說實話,就在寫這篇自我反省以前,我一直都是這樣的,可以說是從來沒有寫過接口,也許您會說,“從來沒有寫過接口也算是學(xué)JAVA”,不過不管你怎么說,確實沒有寫過,所有寫的都是直接在類中實現(xiàn)(注:我這里指的類表示非接口類)。如果有些小程序,確實不需要寫,因為實現(xiàn)也很簡單,也可能以后不需要繼承,也不需要在以后的某年某月再次重新優(yōu)化一下,當(dāng)然沒有必要了。

                 可是,這是一個習(xí)慣問題,當(dāng)你走路習(xí)慣了左邊,那你走路的時候就不會走右邊,你就會在不知覺中去和車車親個嘴。我們應(yīng)該培養(yǎng)自己的這種思維,讓我們不管在大小項目中,都會想到要這么做。有句古話叫“一屋不掃,何以掃天下”就是這個道理,而不是報以“大丈夫不拘小節(jié)”的態(tài)度。


          你可能對這個為什么要寫接口還是不明白,就像《Think In Java》這樣說的,“如果你現(xiàn)在寫了一個功能,以后發(fā)現(xiàn)這個功能執(zhí)行起來速度不理想的時候,如果你去代碼中改,那有可能會是增加BUG進去,如果我們使用了接口,就不用這么麻煩了,方法重寫就很好辦”,我想也是這樣的,我就經(jīng)常犯這樣的錯誤,有些時候隨著時間的推移,連自己寫的程序,邏輯都還要慢慢去理。
           
          3、讓一個類去做特定的事情
           
               
          在《Think In Java》提到,把每個對象都當(dāng)成服務(wù)的提供者,為什么這樣說呢?還是說現(xiàn)實的比喻吧,就像是一個人,我們?nèi)绻M裁炊紩Y(jié)果也可能是他什么都會,但是沒有一樣?xùn)|西是能夠拿出手的,都是半懂。而如果把這些東西分給多個人去學(xué)習(xí),只要他們每人學(xué)自己那一部份,結(jié)果是每個人懂得都不是那么多,也不會有那么大的心理負擔(dān)去學(xué)習(xí),最后都學(xué)得很精,結(jié)果綜合的深度,每個人都能夠獨擋一面,就是這個道理。

                 我個人也是經(jīng)常犯這樣的錯誤,有些時候,一個類下來,什么亂七八糟的功能都有,結(jié)果后來多得連自己有時都分不清楚,那些方法在用,那些方法沒有用了。
           
          4、根本不注重合理使用訪問控制:public, private, protected

             
              
          我自己寫程序的時候,想到什么樣方便,就怎么樣使用,特別是對于類變量,不管定義成PUBLIC還是PRIVATE,都可以在當(dāng)前類中使用無阻,這也應(yīng)該就是讓我不注意的原因吧。如果完全是自己使用,可能出錯的機率不會太大,因為個人對這個應(yīng)該還是熟悉的,但是如果你的應(yīng)用程序需要發(fā)布,用戶來使用就會出錯,因為他們調(diào)用一個不能夠獨立執(zhí)行的方法或者是變量。又或者是一個本來不需要對外公開的方法,你對外公開了,外面的用戶使用了,而在你后面的版本中,你又把這個方法更改了,那么使用者在調(diào)用這個方法的時候就會出錯,至少你寫的程序分健壯性就要打個問號了。
           
          這是我現(xiàn)在發(fā)現(xiàn)的個人毛病,挑出來,希望以后不要再犯。最后見意,有經(jīng)驗的程序員,不要忘了看看《Think In Java》,因為你們更容易犯錯,而在自己的錯誤中生存下去。

          posted on 2007-08-20 15:42 冷面閻羅 閱讀(535) 評論(2)  編輯  收藏

          評論

          # re: 【轉(zhuǎn)】我本人一直以來在犯的錯誤  回復(fù)  更多評論   

          這篇給我的感想也頗多,確實平時得注意!!!!
          2007-08-28 10:15 | winar

          # re: 【轉(zhuǎn)】我本人一直以來在犯的錯誤  回復(fù)  更多評論   

          樓主說的太有道理了,接口是Java中一個很重要的技術(shù),可是平時用得不是很多,還有就是訪問權(quán)限的設(shè)置,幾乎一般都用private。呵呵。
          2008-07-12 23:33 | 張輝

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 绥江县| 佳木斯市| 扬中市| 青神县| 仁布县| 连平县| 莫力| 嘉祥县| 平乐县| 宁武县| 昭通市| 五常市| 微山县| 赣榆县| 金寨县| 五大连池市| 阳朔县| 新野县| 蒙城县| 行唐县| 屏东市| 天全县| 进贤县| 阳泉市| 清镇市| 文登市| 柯坪县| 桃江县| 宿迁市| 天峨县| 基隆市| 宜章县| 贡嘎县| 太和县| 北流市| 息烽县| 雅安市| 江安县| 电白县| 元谋县| 伊吾县|