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

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

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

    莊周夢蝶

    生活、程序、未來
       :: 首頁 ::  ::  :: 聚合  :: 管理

    模塊的設計(書摘)

    Posted on 2008-04-06 13:00 dennis 閱讀(1574) 評論(0)  編輯  收藏 所屬分類: 模式與架構
        模塊化的價值毋庸置疑。
        模塊化代碼的首要特質就是封裝。封裝良好的模塊不會過多向外部披露自身的細節,不會直接調用其它模塊的實現碼,也不會胡亂共享全局數據。模塊之間通過應用程序編程接口(API)——一組嚴密、定義良好的程序調用和數據結構來通信。這就是模塊化原則的內容。API在模塊間扮演雙重角色。在實現層面,作為模塊之間的滯塞點(choke point),阻止各自的內部細節被相鄰模塊知曉;在設計層面,正是API(而不是模塊間的實現代碼)真正定義了整個體系。
        模塊的最佳模塊大小,邏輯行在200到400之間,物理行在400到800之間為最佳。模塊太小,幾乎所有的復雜度都集中在接口,同樣不利于理解,也就是透明性的欠缺。
       緊湊性就是一個特性能否裝進人腦中的特性。理解緊湊性可以從它的“反面”來理解,緊湊性不等于“薄弱”,如果一個設計構建在易于理解且利于組合的抽象概念上,則這個系統能在具有非常強大、靈活的功能的同時保持緊湊。緊湊也不等同于“容易學習”:對于某些緊湊 設計而言,在掌握其精妙的內在基礎概念模型之前,要理解這個設計相當困難;但一旦理解了這個概念模型,整個視角就會改變,緊湊的奧妙也就十分簡單了。緊湊也不意味著“小巧”。即使一個設計良好的系統,對有經驗的用戶來說沒什么特異之處、“一眼”就能看懂,但仍然可能包含很多部分。
        評測一個API緊湊性的經驗法則是:API的入口點通常在7個左右,或者按《代碼大全2》的說法,7+2和7-2的范圍內。
        如果兩個或更多事物中的一個發生變化,不會影響其他事物,這些事物就是正交的。每一個動作只改變一件事,不會影響其他(沒有其他副作用)。舉個例子,比如讀取配置文件,獲得系統設置信息這個方法:
    module Config
       
    def self.load_config
             config_str
    =File.open("r","config.xml").read
             
    #解析配置文件,可能轉化成XML Dom處理等
             
       end
    end
    這個方法想當然地認為配置文件存儲于磁盤文件中,然而配置文件完全是有可能通過網絡獲取的,也就是說文件句柄未必來源于磁盤文件,這個方法承擔了兩個職責:獲取配置數據和解析配置數據。重構一下,以提高正交性:
    module Config
       
    def self.load_config(io)
             config_str
    =io.read
             parse_config(config_str)         
       end
       private
       
    def self.parse_config(config_str)
        
    #解析
       end 
    end
        重構技術中的很多壞味道,特別是重復代碼,是違反正交性的明顯例子,“重構的原則性目標就是提高正交性”。
        DRY(Don't Repeat Yourself)原則,意思是說:任何一個知識點在系統內都應當有一個唯一、明確、權威的表述。這個原則的另一種表述就是所謂SPOT原則(Single Point Of Truth)——真理的單點性。
        提高設計的緊湊性,有一個精妙但強大的方法,就是圍繞“解決一個定義明確的問題”的強核心算法組織設計,避免臆斷和捏造。

    主站蜘蛛池模板: 亚洲久本草在线中文字幕| 青娱乐免费在线视频| 亚洲高清无码综合性爱视频| 亚洲精品中文字幕| 免费一级大黄特色大片| 在线观看亚洲AV日韩A∨| 久久精品无码一区二区三区免费| 一色屋成人免费精品网站| 国产成人亚洲综合无码精品| 一本一道dvd在线观看免费视频| 亚洲成A人片在线观看中文 | 久久精品免费一区二区喷潮| 亚洲人成图片网站| 国产人妖ts在线观看免费视频| 美女免费视频一区二区| 亚洲男人第一无码aⅴ网站| 成av免费大片黄在线观看| 亚洲日韩欧洲乱码AV夜夜摸| 日韩电影免费在线观看中文字幕| 老司机亚洲精品影院| 特级做A爰片毛片免费69| 偷自拍亚洲视频在线观看| 久久精品国产亚洲Aⅴ香蕉| 男的把j放进女人下面视频免费| 亚洲色成人网一二三区| 午夜视频在线观看免费完整版| 真正全免费视频a毛片| 亚洲色成人中文字幕网站| 99久久99久久精品免费观看| 国产精品亚洲片夜色在线| 啊v在线免费观看| 久久免费公开视频| 亚洲人成未满十八禁网站 | 亚洲今日精彩视频| 女人被弄到高潮的免费视频 | 精品国产免费一区二区三区| 亚洲视频在线观看免费视频| 国产小视频在线观看免费| a级毛片免费全部播放| 精品国产日韩久久亚洲| 亚洲色爱图小说专区|