# 模組化概念與優點 - 模組化可以加快 Gradle 構建速度,因為每個模組可以獨立構建,並且只有更改的模組才會重新構建。 - 模組化能夠提高團隊協作效率,讓不同團隊專注於不同模組,避免互相影響。 - 模組化提供更清晰的內容分離,讓開發者只能使用指定模組的代碼。 - 模組化允許模組重用,例如可以在另一個專案中重用現有的功能模組。 # 錯誤一:過早或過快地模組化 - 不要在專案一開始就進行模組化,這樣會浪費大量時間配置 Gradle 文件和依賴關係。 - 對於小型專案,模組化帶來的構建時間優勢不明顯,甚至可以忽略。 - 應先從單一模組開始,隨著專案規模增大或構建時間增加,再考慮引入多模組架構。 - 將單一模組中的包視為真實模組,以便日後輕鬆遷移到多模組架構。 # 錯誤二:基於層級的模組化 - 基於層級的模組化,如將 Data、Domain、Presentation 作為根模組,是錯誤的做法。 - 這種策略會導致每次構建時,大多數模組都需要重新構建,無法有效加快構建速度。 - 基於層級的模組化無法實現團隊間的有效協作,因為模組之間的相互依賴性過高。 - 這種策略也削弱了模組重用性,因為很難單獨重用整個層級模組中的代碼。 # 正確的模組化策略 - 應採用基於功能的模組化策略,即每個功能作為一個模組,並在模組內根據層級進行劃分。 - 這樣的模組化策略能確保只有更改的功能模組需要重新構建,提高構建效率。 - 更容易分配團隊任務,各團隊可以專注於各自的功能模組,避免互相影響。 - 也能提高模組重用性,可以輕鬆將功能模組移植到其他專案中使用。 # Terminology - **Modularizing**:將應用程式分成多個獨立的模組,每個模組負責不同的功能或層級。 - **Multi-module architecture**:一種架構設計,將應用程式拆分成多個模組,有助於提高可維護性、團隊合作以及構建速度。 - **Gradle build**:Android 使用的構建系統,負責編譯代碼和生成 APK 文件。 - **Module**:一個獨立的代碼單元,通常包含某個特定功能的實現。 - **Core module**:核心模組,包含應用程式的基本功能或邏輯。 - **Core UI module**:核心 UI 模組,處理應用程式的核心使用者界面元素。 - **Onboarding module**:用於新用戶導入的模組,通常包含註冊或初次使用的相關功能。 - **Tracker module**:用於追蹤或紀錄數據的模組,例如卡路里追蹤器。 - **Work delegation**:工作委派,將不同的任務分配給不同的團隊或人員。 - **Layer-based modularization**:根據功能層級(如數據層、業務層、展示層)來模組化應用程式的一種策略。 - **Package by layer**:將代碼按層級(如數據層、業務邏輯層、展示層)組織在不同的包中。 - **Feature-based modularization**:根據應用程式的特定功能來模組化,而非根據層級來劃分。 - **Reusability**:代碼重用性,指在其他項目中再次使用模組或代碼的能力。 - **Presentation layer**:展示層,負責用戶界面和用戶交互的代碼部分。 - **Domain layer**:業務邏輯層,負責應用程式的核心邏輯和業務規則。 - **Data layer**:數據層,負責數據管理、網絡請求和數據庫操作的代碼部分。 - **Shameless self promo**:一種自我推銷的方式,通常在不太正經的情況下使用。 - **CI/CD**:持續整合和持續部署,指的是一套自動化的開發實踐,用於持續測試、整合和部署代碼。