三国杀武将|手游三国杀边锋版

iOS組件化開發實施一期文檔

米米狗 2019-05-24 10:52:41 2150
本文來自 擇勢勤 ,作者 米米狗

image.png

組件化開發系列:
(一)iOS組件化開發架構設計思考
(二)iOS組件化開發實施一期文檔

一、目標

梳理項目工程結構,抽離基礎層和中間層。

保證所有第三方庫管理、基礎庫從主工程抽出,可獨立編譯,減少編譯時間。

梳理提供的功能和使用方法,便于各業務模塊的調用。

讓團隊成員更熟悉公司項目,減少重復造輪子,提高開發效率。

二、實施計劃

1、實施說明

  1. 專門建立一個組件化的分支組,組件化的主分支和多個改動分支。組件化的主分支,以周為單位,進行review和合并代碼使用,并標記tag和提交測試,以便改動可以隨版本發布,建議專人負責管控。

  2. 每次都小步改動和改動單一性(如調整文件路徑、修改工程名稱、改動了Pods等單獨進行),并及時編譯,驗證改動是否正確,成功后提交。

  3. 盡量在不改動代碼邏輯的情況下做調整。較大的改動,如修改了邏輯、移動了某個庫到其他工程、改動了Pods、刪除了某些文件,可以做些記錄或提交代碼時做詳細的說明,以便問題復查。

  4. 移動文件時,注意文件環境MRC/ARC的變化,如需要請盡量改動為ARC。

2、項目工程定義

初步調整工程目錄結構如下:

基礎層和中間層

Pods: 僅Pods管理的第三方庫。
DDManualThirdSDKs: Pods不能管理的第三方庫,對第三方進行必要的封裝,集中做成私有庫的形式,再交給Pods管理。
DDDevelopLib: 自行封裝的私有庫,如系統類分類、數據處理類、通用UI組件、宏定義和常量定義等。做成私有庫,交給Pods管理。

業務組件層

DDEngine: 后續會把模型規整到具體模塊中,部分文件需要抽離到基礎層或中間層,其他暫時保持不變,后續抽離封裝網絡庫。
DDMIX_UI: 暫時保留,屬于三期。
ddDemo: 將其中的第三方庫、UILib、分類等,下沉到基礎層或中間層外,暫時保持不變。

基礎層中間層工程通用的目錄結構

DDManualThirdSDKs:工程代碼

CoreCode:核心代碼
Resources:需要的資源文件。
SupportingFiles:.pch, .plist等。

Frameworks:依賴的系統庫。
Products:編譯好的.a文件。
Pods:pods配置文件。

一二級目錄是標準配置,三、四、五根據需要自行配置。

調整要點

  1. 每個工程下都需要建立一個README.md 文件,寫明工程使用說明,后續交由指定人員,輪流負責管理。

  2. 每個工程除了依賴更底層庫外,都能獨立編譯,并無警告,第三庫可以采用忽略的形式隱藏,自行編寫的代碼必須無警告。

  3. 文件路徑使用真實路徑,項目目錄和真實路徑一致,除了工程級的Frameworks、Products、Pods除外,禁止使用虛擬路徑。

參考擴展文檔
1、iOS Workspace 多項目管理
2、iOS多個Target配置詳情操作
3、iOS工程目錄結構的思考
4、CocoaPods進階:詳解私有庫制作
5、iOS工程文件整理

3、整理三方庫統一Pods管理

把項目中散落的第三方庫都規整到Pods和DDManualThirdSDKs工程中,優先Pods管理。
散落的第三方庫有:iflyMSC、libSunFlower、DDReader、YYText、MiaoZhen、NTalkerUIKitSDK、TalkingData、VoiceConvert、HPGrowingTextView(7年未維護了,局部使用,可以內化為自行代碼)等。

DDManualThirdSDKs工程 CoreCode文件夾下目錄結構:

CoreCode:核心代碼

YiGuanFangZhou:YiGuanFangZhou 代碼區。

PackageLayer:YiGuanFangZhou 封裝(根據需要封裝)。
SDKCode:YiGuanFangZhou SDK代碼。

QQSDK:QQSDK代碼。

PackageLayer:QQSDK 封裝(根據需要封裝)。
SDKCode:QQSDK代碼。

把pod管理第三方庫有自行封裝的代碼集中到一個文件下參考目錄結構:

DDPodSDKsPackage:工程代碼

AFNetworkingPackage:AFNetworking 封裝代碼(根據需要封裝)。
SDWebImagePackage:SDWebImage 封裝代碼。
WechatSDKPackage:DDWeChatPay、WeixinService等

調整要點

  1. DDManualThirdSDKs工程下,創建DDManualThirdSDKsREADME.md,做好第三方庫記錄和說明,再將DDManualThirdSDKs打包成一個私有庫,用Pods管理。

  2. 移除不使用的舊庫,有重大功能變更的庫,給出升級或替換或保持現狀的建議。

  3. 把所有使用的三方庫,梳理進一個在線表格。三方庫的使用版本、最高版本、主要功能、哪些模塊使用(全部、多個模塊、單獨模塊)、依賴庫、備注項,后續有指定人員維護。

4、梳理DDDevelopLib私有庫

自行封裝的私有庫,作為整個工程的基礎庫,不與具體的業務耦合,如系統類分類、數據處理類、通用UI組件、宏定義和常量定義等。做成私有庫,交給Pods管理。如ddDemo中的VerifyUpdate、UILib、DDAppkit、Common、Categorys、Function、DDMonkey等。

CoreCode文件夾主要文件分類如下:

DDPodSDKsPackage:工程代碼

AFNetworkingPackage:AFNetworking 封裝代碼(根據需要封裝)。
SDWebImagePackage:SDWebImage 封裝代碼。
WechatSDKPackage:DDWeChatPay、WeixinService等

調整要點

  1. 新增DDDevelopLibREADME.md,管理庫能提供的功能,使用說明,修改說明,后續有指定人員維護。

  2. 主要移動文件夾,盡量少的改動邏輯,若項目中有存在相同邏輯或需要抽取代碼時,請做好修改記錄和review代碼。

5、Resources文件整理

初步整理Resources資源文件,后期會根據資源情況再統一整理圖片資源,注意資源文件的加載路徑的變化后,保證資源文件能正常加載。

參考目錄結構如下:

Images.xcassets:圖片系統管理器
DDFonts:字體庫
gif:動圖管理
Data:數據資源文件

plist:plist文件
json:json文件

調整要點

將Other Sources虛擬文件夾中的plist整理到Resources中。

將項目中使用的圖片、Plist文件、音視頻文件,暫時歸整到Resources文件下。

6、SupportingFiles文件整理

創建真實目錄SupportingFiles,文件路徑有所變化,請在項目配置中調整,存放系統支持文件如下:

main.m
ddDemo-Info.plist
ddDemo_Prefix.pch
DDDebug.entitlements

三、工期評估

參照實施文檔進行,初步評估工期為14天,后續遇到問題,及時溝通調整。

image.png

參考工期

四、其他細節

  1. 開發人員的協調問題。

  2. 代碼review管控。

  3. 提測,上線進度把控。

作者:擇勢勤
鏈接:https://www.jianshu.com/p/599e97b63af7

三国杀武将