www.alphatom.com

          統(tǒng)計(jì)

          留言簿(1)

          閱讀排行榜

          評(píng)論排行榜

          2005年4月9日 #

          重構(gòu)---Who are you?!

          不要當(dāng)你需要新的功能的時(shí)候,或者原來(lái)的程序出了Bug,你才想起重構(gòu)。

          《重構(gòu)》那本書(shū)你看過(guò)了嗎?它寫(xiě)的是什么?那本書(shū)的價(jià)值何在?介紹重構(gòu)這門(mén)技術(shù)?告訴你為什么重構(gòu)?錯(cuò)!那本書(shū)的價(jià)值就在于它把應(yīng)該引起重構(gòu)的Bad Smell一一列了出來(lái),并給出了該如何重構(gòu)解決這些Bad Smell的意見(jiàn),不然那本書(shū)看一遍就可以扔了!

          你知道什么是面向?qū)ο髥幔拷涌冢?你知道什么是TDD嗎?重構(gòu)!

          詳細(xì)內(nèi)容

          posted @ 2006-02-06 12:31 idior 閱讀(640) | 評(píng)論 (1)編輯 收藏

          Enterprise Test Driven Develop

                 TDD這個(gè)概念出現(xiàn)至少也有兩年多了, 在大家剛接觸它時(shí)候, 幾乎沒(méi)人不拍手鼓掌, 測(cè)試驅(qū)動(dòng)的概念確實(shí)可以為我們帶來(lái)很多的好處. 泡泡在前不久寫(xiě)了一篇很不錯(cuò)的TDD的文章, 可是我還是忍不住在他的評(píng)論中說(shuō)到這篇文章有點(diǎn)”. 確實(shí),同樣的概念在書(shū)中, 在大家的口中已經(jīng)被說(shuō)爛了. 但是TDD真正給我們帶來(lái)什么呢? 有多少人在用TDD? 為什么這么好的技術(shù)到了應(yīng)用中就被人們拋棄了呢?

          (: Design Pattern面世都十幾年了, 現(xiàn)在還是有不少好書(shū)在介紹它,所以不代表不好,泡泡的總結(jié)在園子里還是最好的一篇TDD文章, 特別建議剛接觸TDD的參考之.)  

                  TDD的應(yīng)用是阻撓TDD發(fā)展的重要原因, 回想一下有關(guān)TDD書(shū)中舉的那些例子. 再想想你學(xué)習(xí)了解TDD自己又做了哪些應(yīng)用? --- 類庫(kù), 最基本的幾個(gè)類之間協(xié)作, 不涉及數(shù)據(jù)庫(kù),不涉及UI,不涉及企業(yè)服務(wù). 這樣看來(lái)TDD最適用的場(chǎng)合就是不涉及復(fù)雜應(yīng)用的類庫(kù). 比如一個(gè)保齡球游戲, 一個(gè)Money兌換系統(tǒng). 如果是這樣那TDD自然沒(méi)有人用了, 真正的項(xiàng)目有幾個(gè)不涉及負(fù)責(zé)應(yīng)用呢, 有幾個(gè)不和數(shù)據(jù)庫(kù),界面打交道? 可是一旦你想將TDD應(yīng)用于此時(shí), 你就會(huì)發(fā)現(xiàn)煩不勝煩, 無(wú)從下手.

                 難道TDD真得這么不堪一擊?...  詳細(xì)內(nèi)容

                          
          Something you should know

          不要去測(cè)試類中的每個(gè)方法. 要測(cè)試這個(gè)類對(duì)外所能提供的功能, 這些功能可能是其中的幾個(gè)重要方法,可能需要類中的幾個(gè)方法協(xié)作. 記住一點(diǎn), TDD中測(cè)試代碼也是文檔的一部分, 你應(yīng)該通過(guò)你的測(cè)試代碼告訴別人如何使用這個(gè)類.

          posted @ 2005-08-09 14:00 idior 閱讀(474) | 評(píng)論 (0)編輯 收藏

          Generics to Eliminate Casting ?

          詳細(xì)內(nèi)容

          posted @ 2005-08-01 18:05 idior 閱讀(439) | 評(píng)論 (0)編輯 收藏

          Enterprise Persistence Design

          在前不久發(fā)布的質(zhì)疑國(guó)內(nèi).Net社區(qū)的隨筆中, 我個(gè)人算是對(duì)社區(qū)的力量抱怨了一把. 下面該有些實(shí)際行動(dòng)來(lái)推動(dòng)社區(qū)的發(fā)展, 其實(shí)在寫(xiě)那篇隨筆的時(shí)候正在總結(jié)一些心得, 現(xiàn)在我把它發(fā)表出來(lái)供大家討論,也算是帶個(gè)好頭,希望能起到拋磚引玉的作用.

              在閱讀此文之前推薦閱讀O/R Mapping 基本概念,在基本概念上達(dá)成共識(shí).

              Enterprise Persistence Design

           

          posted @ 2005-07-18 16:46 idior 閱讀(617) | 評(píng)論 (0)編輯 收藏

          多態(tài)? 你的理解是什么?

          在博客園我曾經(jīng)發(fā)過(guò)這么一個(gè)隨筆,得到不少的相應(yīng),同樣希望能聽(tīng)到j(luò)ava朋友們的高見(jiàn)

          wayfarer
          他的隨筆中談到了面試別人時(shí)的一個(gè)問(wèn)題. 你是如何理解多態(tài)的.

          我想每個(gè)人的理解都不同,那么我們就來(lái)集思廣義吧.
          你可以從概念層 實(shí)現(xiàn)層,各個(gè)層面談?wù)勀銓?duì)它的理解.角度越多,越能加深我們對(duì)它的理解.

          不過(guò)有個(gè)小要求,就是用一兩句話把你的意思表達(dá)出來(lái).越是精練的語(yǔ)言,越能反應(yīng)問(wèn)題的實(shí)質(zhì).
          我們不要求全面但是要有內(nèi)容.比如sumtec的面向?qū)ο缶褪敲嫦蚪涌?SPAN lang=EN-US>.

          不過(guò)這里不要求一定是自己的見(jiàn)解,也可以是別的大家的看法.
          畢竟我們的目的是理解多態(tài)!

          我先拋磚引玉:
          多態(tài)就是實(shí)現(xiàn)將接口(不特指關(guān)鍵字interface)與實(shí)現(xiàn)分離的技術(shù).


          評(píng)論:

          # re: 多態(tài)? 你的理解是什么? 2005-03-06 23:38 | alittlefish

          在實(shí)際操作中,多態(tài)可以讓我不用關(guān)心某個(gè)對(duì)象到底是什么具體類型,就可以使用該對(duì)象的某些方法,而這些方法通過(guò)一個(gè)抽象類或者接口來(lái)實(shí)現(xiàn)。
          從下往上看的話,多態(tài)實(shí)際上是多個(gè)對(duì)象的抽象,對(duì)它們進(jìn)行通用編碼。
          刪除評(píng)論  

          # re: 多態(tài)? 你的理解是什么? 2005-03-07 08:41 | 一切從.NET開(kāi)始

          沒(méi)有多態(tài),工廠方法模式的效果就大打折扣,或者可以說(shuō)不可能實(shí)現(xiàn) :)
          刪除評(píng)論  

          # re: 多態(tài)? 你的理解是什么? 2005-03-07 08:47 | 小詐

          對(duì)于相同的事件(不指一般我們說(shuō)的那些事件),不同的對(duì)象表現(xiàn)出不同的行為(特征)。

          刪除評(píng)論  

          # re: 多態(tài)? 你的理解是什么? 2005-03-07 09:22 | KingofSC

          多態(tài)給我的感覺(jué)就是提供父類調(diào)用子類代碼的一個(gè)手段而已
          刪除評(píng)論  

          # re: 多態(tài)? 你的理解是什么? 2005-03-07 09:29 | idior

          很好,繼續(xù),希望看到更多更新的觀點(diǎn)。
          刪除評(píng)論  

          # re: 多態(tài)? 你的理解是什么? 2005-03-07 10:08 | age0

          繼承的目的是復(fù)用,繼承復(fù)用包括兩方面的復(fù)用:抽象(接口)復(fù)用,實(shí)現(xiàn)(過(guò)程)復(fù)用。

          多態(tài)的目的就是要將抽象復(fù)用及實(shí)現(xiàn)復(fù)用剝離開(kāi)來(lái),子類雖然擁有和父類一樣的抽象接口,但實(shí)現(xiàn)過(guò)程卻未必一樣,多態(tài)的引入就是要在繼承的基礎(chǔ)上實(shí)現(xiàn)變異的可能性。當(dāng)然子類繼承也不一定會(huì)產(chǎn)生實(shí)現(xiàn)差異,所以多態(tài)允許在產(chǎn)生差異的時(shí)候override父類接口,沒(méi)有產(chǎn)生差異的時(shí)候直接繼承。

          interface
          則是另一種復(fù)用方式,interface只允許抽象復(fù)用,而禁止實(shí)現(xiàn)復(fù)用,所以interface比繼承顯得更輕量,但實(shí)際上系統(tǒng)中的實(shí)現(xiàn)復(fù)用必須由其他機(jī)制來(lái)保證。
          刪除評(píng)論  

          # re: 多態(tài)? 你的理解是什么? 2005-03-07 10:15 | age0

          To idior,想用一兩句話來(lái)解釋清楚一個(gè)深?yuàn)W的概念是不是有點(diǎn)不切實(shí)際。
          刪除評(píng)論  

          # re: 多態(tài)? 你的理解是什么? 2005-03-07 10:53 | rIPPER

          一時(shí) 找不到sun oo-226課程了,里面應(yīng)該有比較簡(jiǎn)單明確的定義
          刪除評(píng)論  

          # re: 多態(tài)? 你的理解是什么? 2005-03-07 10:59 | sysword

          我的理解,一個(gè)問(wèn)題一般會(huì)表現(xiàn)在多個(gè)層面上,各個(gè)層面上抽象程度不同,多態(tài)正是思考問(wèn)題過(guò)程中跨越各層的橋梁。
          刪除評(píng)論  

          # re: 多態(tài)? 你的理解是什么? 2005-03-07 11:09 | dudu

          我覺(jué)得多態(tài)是在對(duì)象的基礎(chǔ)上更高級(jí)的抽象, 它描述了一組具有共性的對(duì)象。
          Allen Lee
          的《今天你多態(tài)了嗎?》值得一讀: http://www.cnblogs.com/allenlooplee/archive/2004/11/02/59519.html
          刪除評(píng)論  

          # re: 多態(tài)? 你的理解是什么? 2005-03-07 12:38 | 生活、工作

          運(yùn)行時(shí),才明確具體是指那個(gè)對(duì)象,這給client代碼,帶來(lái)了很大的靈活性。使依賴注入、針對(duì)抽象與接口編程、同一行代碼操作不同類的對(duì)象(用接口)等等成為可能。
          刪除評(píng)論  

          # re: 多態(tài)? 你的理解是什么? 2005-03-07 12:50 | idior

          我比較喜歡生活、工作的描述
          ◎age0
          如果概念解釋是很難用一兩句話說(shuō)清。
          但是就像生活、工作這樣的描述就能有意義。


          刪除評(píng)論  

          # re: 多態(tài)? 你的理解是什么? 2005-03-07 17:43 | 班門(mén)弄斧

          多態(tài)是多個(gè)對(duì)象UpCast的過(guò)程
          刪除評(píng)論  

          # re: 多態(tài)? 你的理解是什么? 2005-03-07 19:56 | 丁丁

          用人來(lái)表示基對(duì)象,多態(tài)就是對(duì)于不同種類的人(情圣或者情盲),拍MM馬屁雖然目的相同,但是效果很不相同,情圣說(shuō)你好漂亮就抱得MM歸,而情盲拍得話,可能就被鋸
          刪除評(píng)論  

          # re: 多態(tài)? 你的理解是什么? 2005-03-07 22:57 | Neter

          我比較同意小詐的觀點(diǎn),多態(tài)就是具有相似功能的對(duì)象,有著不同的表現(xiàn)方法和行為。
          刪除評(píng)論  

          # re: 多態(tài)? 你的理解是什么? 2005-03-08 01:32 | NickLedson

          我的觀點(diǎn)是大大增強(qiáng)代碼的復(fù)用性,使得項(xiàng)目架構(gòu)更加清晰,松耦合.
          比如在實(shí)際應(yīng)用中我可以輕松繼承一個(gè)System.Window.Forms.Control命名空間下的類比如Button打造屬于自己的NixButton類而當(dāng)一些原有系統(tǒng)的方法參數(shù)要求的傳入的參數(shù)類型是Button時(shí),我不必修改原有代碼而直接把NixButton的實(shí)例對(duì)象傳進(jìn)去依然可用.

          從而達(dá)到代碼復(fù)用和架構(gòu)松耦合的效果

          子類繼承了父類的所有接口,包括invoke handler/object對(duì)應(yīng)表然后按繼承關(guān)系和invoke handler不同而調(diào)用不同的實(shí)現(xiàn)代碼!

          刪除評(píng)論  

          # re: 多態(tài)? 你的理解是什么? 2005-03-08 09:44 | idior

          小詐的觀點(diǎn)確實(shí)比較簡(jiǎn)明的說(shuō)出了多態(tài)的表現(xiàn).
          希望看到更加深刻透徹的觀點(diǎn).
          刪除評(píng)論  修改評(píng)論

          # re: 多態(tài)? 你的理解是什么? 2005-03-11 16:15 | myx

          一位司機(jī)在公共汽車上,有可能是乘客,有可能是司機(jī),就就是多態(tài)吧^_^
          刪除評(píng)論  

          # re: 多態(tài)? 你的理解是什么? 2005-03-13 06:21 | MindScape

          和小作的差不多,多態(tài)的本質(zhì)根本是語(yǔ)義相同。

          多態(tài)是指,不同對(duì)象對(duì)應(yīng)于同一動(dòng)作語(yǔ)義具有不同的實(shí)際行為。


          刪除評(píng)論  

          # re: 多態(tài)? 你的理解是什么? 2005-03-13 18:10 | 龍蟄(NeoLee)

          呵,我也常在面試中提到對(duì)多態(tài)的理解,我的理解是:

          接口是面象對(duì)象的實(shí)現(xiàn),多態(tài)是面象接口的應(yīng)用!

          BTW:
          不太認(rèn)同sumtec的面向?qū)ο缶褪敲嫦蚪涌?SPAN lang=EN-US>.
          面象對(duì)象更多的是一種開(kāi)發(fā)思想,接口更多的是實(shí)現(xiàn)技術(shù),用就是來(lái)表達(dá)不確切,但這么形容也道出接口是面象對(duì)象開(kāi)發(fā)中實(shí)現(xiàn)抽象最主要的手段!
          刪除評(píng)論  

          # re: 多態(tài)? 你的理解是什么? 2005-03-13 21:56 | idior

          sumtec的那句話當(dāng)然不對(duì),關(guān)鍵是道出很本質(zhì)的東西。

          我覺(jué)得多態(tài)是面向接口的保證,支持。 而不是應(yīng)用,關(guān)系反了吧。
          由于多態(tài)的支持才能面向接口。
          刪除評(píng)論  

          # re: 多態(tài)? 你的理解是什么? 2005-03-14 00:32 | 龍蟄(NeoLee)

          句中的應(yīng)用有兩重含義:
          其一,多態(tài)是接口的特性。其二,就是對(duì)接口的應(yīng)用,如在子類中override父類接口。
          刪除評(píng)論  

          # re: 多態(tài)? 你的理解是什么? 2005-03-26 23:09 | jsports

          我認(rèn)為多態(tài),首先蘊(yùn)含有decorator 的味道---------->一樣的接口,但是功能上增強(qiáng)了。

          另外一方面,多太表明實(shí)現(xiàn)多態(tài)的class是一族的,
          對(duì)外部(外人)來(lái)講,只要知道有這個(gè)方法(標(biāo)簽),
          具體運(yùn)行時(shí)你是這個(gè)系列(族)的誰(shuí),我不關(guān)心,我只關(guān)心你能給我進(jìn)行這個(gè)服務(wù)就行。
          刪除評(píng)論  

          # re: 多態(tài)? 你的理解是什么? 2005-03-27 08:30 | 生活、工作

          通俗的說(shuō),先說(shuō)明一項(xiàng)功能或動(dòng)作,風(fēng)馬牛不相及的東西去實(shí)現(xiàn)它。

          對(duì)服務(wù)器段代碼而言:
          訂下這個(gè)功能的設(shè)計(jì)時(shí)間較長(zhǎng),但寫(xiě)時(shí)一下了就完成了,用1%的時(shí)間,但風(fēng)馬牛不相及的東西去實(shí)現(xiàn)它時(shí),耗時(shí)就多了,用99%的時(shí)間。

          對(duì)客戶端代碼而言:
          從使用的角度說(shuō):好處還是我上面所說(shuō)的。
          從學(xué)院派的角度說(shuō):就是小詐的說(shuō)法對(duì)于相同的事件(不指一般我們說(shuō)的那些事件),不同的對(duì)象表現(xiàn)出不同的行為
          刪除評(píng)論  

          # re: 多態(tài)? 你的理解是什么? 2005-03-27 11:41 | idior

          jsports和生活、工作的觀點(diǎn)都不錯(cuò) :)
          刪除評(píng)論  修改評(píng)論

          # re: 多態(tài)? 你的理解是什么? 2005-04-01 13:54 | ttyp

          多態(tài)是和繼承相反的概念
          多態(tài)是父類調(diào)子類的實(shí)現(xiàn),繼承是子類調(diào)父類的實(shí)現(xiàn),由于多態(tài)時(shí)不知道會(huì)被哪個(gè)子類繼承,所以定義的東西都是虛函數(shù),當(dāng)你執(zhí)行這個(gè)虛函數(shù)時(shí),首先找到該虛函數(shù)代表的實(shí)體子類,并執(zhí)行子類中的相關(guān)代碼
          刪除評(píng)論  

          # re: 多態(tài)? 你的理解是什么? 2005-04-01 14:08 | idior

          @ttyp
          多態(tài)是和繼承相反的概念 interesting idea!
          刪除評(píng)論  修改評(píng)論

          # re: 多態(tài)? 你的理解是什么? 2005-04-09 13:24 | huangyi

          我從客戶和服務(wù)的角度來(lái)理解 就是

          服務(wù)可以由許多人來(lái)提供。
          而客戶只管使用服務(wù),不需要知道服務(wù)的來(lái)源更不需要知道服務(wù)是如何實(shí)現(xiàn)的。另外,客戶也許還會(huì)有小秘,專門(mén)幫客戶選擇服務(wù)的。

          哎 多態(tài)讓客戶太舒服了啊 呵呵

           

          posted @ 2005-04-09 16:13 idior 閱讀(1269) | 評(píng)論 (6)編輯 收藏

          測(cè)試驅(qū)動(dòng)開(kāi)發(fā) --- Rss Reader Item Marker

          1.         Refactory away External Loops        盡量將集合遍歷的操作放在集合內(nèi)

          2.      Reduce Private Method                    盡量減少私有方法

          3.     Open-Close Principle                        封閉開(kāi)放原則

          4.      Specification Pattern                        如何從一組對(duì)象中選出滿足特定條件的對(duì)象

          本文將圍繞以上主題就最近很流行的RSS閱讀器的一個(gè)功能(Mark)以測(cè)試驅(qū)動(dòng)開(kāi)發(fā)的方式展開(kāi). 最后給出一個(gè)通用的處理集合的框架.

          詳見(jiàn)文章
          blogJava首貼

          posted @ 2005-04-09 16:12 idior 閱讀(394) | 評(píng)論 (0)編輯 收藏

          主站蜘蛛池模板: 桂平市| 桦川县| 石首市| 安多县| 碌曲县| 遂平县| 梅州市| 南投县| 永吉县| 玉溪市| 阜新| 静宁县| 贵德县| 盘山县| 吉林省| 霞浦县| 安平县| 图木舒克市| 乌拉特后旗| 资中县| 罗田县| 天津市| 海晏县| 石狮市| 申扎县| 平潭县| 日喀则市| 弋阳县| 涿鹿县| 任丘市| 开江县| 军事| 扎赉特旗| 阳西县| 班戈县| 台南县| 桃园市| 靖边县| 临洮县| 宜宾市| 遵义市|