<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Samuel's Weblog

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      7 隨筆 :: 2 文章 :: 9 評論 :: 0 Trackbacks

    置頂隨筆 #

    最近在審查(review)代碼時,常常發現一大堆代碼充滿了各種bad smell.即使工作了三五年的同事,也不會例外.溝通時往往發現他們對OO的理解只是表現出簡單的概念理解.對OO的一些原則不甚了解,或者寫代碼也是跟著感覺走.

    我最初做開發的時候也是跟著感覺走,初次聽到OCP如天外來物.使用Java或C#不代表你就是在做OO開發,熟練使用OO語言不代表已經對OO非常了解.感謝Uncle Bob的經典巨著<Agile Software Development>,堅持閱讀的習慣讓我接觸并努力理解OO原則.一旦對這些原則有了深入的認識,寫代碼時就已經從更高的角度來分析問題,解決問題,力爭寫出優雅的代碼.

    我對OO的了解也不算多深刻,只在這里拋磚引玉.因為原則比較多,用一個系列來介紹會讓大家更容易溝通.

    同時,原則是死的,人是活的,不要被這些原則束縛,有一些原則在特定的情況下才會有效.

    Single Choice Principle(SCP)
    所有的判斷只在一處進行.違反此原則的典型情況是不同的方法中充斥著相同的if ... else ...或類似的語句.

    Linguistic Modular Units

    Few Interfaces

    Small Interfaces

    Explicit Interfaces

    Behavioral Completeness
    一個完整的類必須包含完整的方法.如果類沒有完成它的職責,或者沒有完成其父類需要完成的工作,那么它就是不完整的類.

    Law Of Demeter
    只與直接協作的類交互.

    The Principle of Essential Representation(PER)
    類應該包含而且只包含其本質的定義和表現,與SRP比較接近.

    Single Responsibility Principle(SRP)
    一個類只承擔一項職責,只能有一個發生變化的理由,那就是它的職責變化了.

    Open-Colse Principle(OCP)
    類應該對擴展是開放的,對修改是封閉的.

    Liskov Substitution (LSP)
    子類必須可以替換父類.

    Dependency-Inversion Principles(DIP)
    高層應該不依賴于低層,雙方都應該依賴于抽象.抽象不依賴于細節,細節應該依賴于抽象.

    Interface Segregation Principles(ISP)
    接口屬于客戶程序.

    ---------------------------------
    Reuse Release Equivalence Principle(REP)
    重用的粒度等于發布的粒度.

    Common Reuse Principle(CRP)
    包中的類應該是共同重用的.

    Common Closure Principle(CCP)
    包中的類對同一類變化共同封閉的,一個類發生變化,可能所有的類都要發生變化.

    ---------------------------------
    Acyclic Dependencies Principle(ADP)
    包之間的依賴結構不應該存在環依賴.

    Stable Dependencies Principle (SDP)
    包應該依賴于比它更穩定的包.

    Stable Abstractions Principle(SAP)
    包的穩定程度與抽象程度成正比,越抽象的包越穩定.

    ---------------------------------
    開發時應該避免的bad design smell:
    僵化(Rigidity) 一處變化會影響系統中的很多地方.
    脆弱(Fragility) 一處變化會影響系統中不應該被影響的地方.
    牢固(Immobility) 很難被重用.

    還有一些原則可能被遺漏掉,如果你發現了,請及時提醒我.

     更多內容在另一博客http://samuelray.javaeye.com.
    posted @ 2008-03-14 09:55 SamuelRay 閱讀(1854) | 評論 (8)編輯 收藏

    僅列出標題  
    主站蜘蛛池模板: 国产精品亚洲四区在线观看| 亚洲第一区视频在线观看| 亚洲AV无码一区二区三区网址 | 亚洲第一AAAAA片| 菠萝菠萝蜜在线免费视频| 国产大片91精品免费观看男同| 亚洲精品无码专区| 日本a级片免费看| 色噜噜的亚洲男人的天堂| 国产成人3p视频免费观看| 国产精品亚洲片在线花蝴蝶| 亚洲av无码成人精品区| 伊人久久国产免费观看视频| 亚洲色婷婷综合久久| 暖暖免费在线中文日本| 亚洲精品国产第1页| 免费无码又爽又刺激高潮 | 亚洲AV无码不卡无码| 1000部拍拍拍18勿入免费视频软件| 亚洲一区二区三区在线观看蜜桃 | 亚洲?v无码国产在丝袜线观看| 亚洲一区二区三区免费| 国产av天堂亚洲国产av天堂 | 亚洲成a人片7777| 成人毛片免费观看视频| 男女交性无遮挡免费视频| 亚洲一区二区三区无码中文字幕| 久久久久久一品道精品免费看| 亚洲黄网在线观看| 色吊丝最新永久免费观看网站| 免费无遮挡无遮羞在线看| 亚洲av片劲爆在线观看| 免费观看毛片视频| 97在线免费视频| 亚洲人xxx日本人18| 2048亚洲精品国产| 精品久久久久成人码免费动漫| 看亚洲a级一级毛片| 老司机亚洲精品影院| 国产免费观看网站| 免费无码成人AV在线播放不卡|