互聯網產品迭代速度極快,人員變更頻繁,對底層承載業務的系統帶來的影響則是:一個系統可能會有成百人在改造它,一個系統糅合了 N 多人的編程思想,然而每個人的編程風格不同、設計理念不同,這些差異性會導致系統的可讀性變差、可維護性降低,新增業務的成本變高。而模塊化就是根據屬性或者特性將程序分割成一個個有良好定義的邊界的組件,同時附帶有相對詳細的文檔說明,從而在某種程度上減少程序的復雜性。
一般來說模塊化后的程序組件可以單獨開發、編譯並相互聯系。組件內的細節只對改組件內的代碼展示,而其他組件只能看到該組件明確公開的部分。模塊化的最終目標呢就是減少維護成本。就比如我們常見java類 其實就是模塊化的體現,他對自身的代碼細節很完善,但是對外我們只能看到一些公開參數。
模塊化也並非是非常方便的模式,當遇到一些較大的項目時,我們不能對項目模塊化的特別細致,因為這樣會導致系統膨脹的異常巨大,只能根據一些比較大的特性來進行系統性的模塊化,比如對 游戲 這個模式進行分割,我們不可能單獨分割成歡樂斗地主、麻將、和平精英等等等等,我們只能將其分化為 休閑游戲、射擊游戲之類的,如果分的太細,又導致系統龐大帶來了一定的復雜性。系統開發中我們常見的mvc模式就是這樣的例子。
我們如何來對業務進行模塊化呢?一般分為以下步驟
1.分析問題,明確需要解決的任務,對問題進行歸類和抽象。
2.對任務進行逐步分解和細化,分成若干個子任務,每個子任務只完成部分完整功能,並且可以通過函數來實現
3.確定模塊(函數)之間的調用關系
4.優化模塊之間的調用關系
5.在主函數中進行調用實現
在模塊化設計中,歸類和抽象是最為重要的思想,那么什么是歸類和抽象呢?舉個例子,我們在一個系統中,可以將上傳文本和上傳圖片統稱為上傳,這叫歸類;上傳文本是只允許上傳文本類文件,上傳圖片是只允許上傳圖片格式的文件,這叫抽象。通過歸類和抽象后,我們再進行開發 文件展示、文件維護 時 我們又可以對不同的模塊進行聯系划分,有了文件維護,文件才能展示,這樣對文件功能區的調用關系就進行了明確化,同時開發程序是對應的調用關系也得到了明確。通過這些關系呢,我們可以歸結出一張聯系圖,后續的新的需求我們也可以根據歸類和抽象和聯系圖進行比較,分析出是屬於哪個部分的需求。
模塊化的五個基本特征
1.層次分明,可以理解為設計一個層級分明的樹狀結構
2.抽象和細分,抽象就是對需求進行分析,不考慮實現部分,細分就是對需求進行逐級分級,對上一部分添加一定的細節
3.組成獨立,除了必要的接口,盡量減少模塊間、分系統、子系統之間的邏輯依賴,這樣在后期進行維護升級時,就可以不用干涉其他不相關的部分
4.面向數據結構
5.高內聚,低耦合