iOS組件化開發(fā)實(shí)施一期文檔

組件化

組件化開發(fā)系列:
(一)iOS組件化開發(fā)架構(gòu)設(shè)計(jì)思考
(二)iOS組件化開發(fā)實(shí)施一期文檔

前言

???我們?cè)谡勀K化、組件化,中心路由,響應(yīng)式編程,三層、四層架構(gòu),依賴注入等概念的時(shí)候,出發(fā)點(diǎn)是什么?應(yīng)該是項(xiàng)目管理上的穩(wěn)定性,可維護(hù)性,開發(fā)效率,需要從業(yè)務(wù)中提煉出更抽象的結(jié)構(gòu)思想,不要為了架構(gòu)而架構(gòu),流于形式。軟件項(xiàng)目開發(fā)的整個(gè)周期內(nèi)都應(yīng)該考慮這些問題,而且是持續(xù)性的,關(guān)鍵是我們一定要有設(shè)計(jì)思想、負(fù)責(zé)的態(tài)度、認(rèn)真的執(zhí)行力。具體有必要做哪些,可以根據(jù)實(shí)際情況,做好預(yù)案,逐步實(shí)施。

???其實(shí)好多事情,我們也可以借勢(shì)去推動(dòng),幫助公司和個(gè)人成長(zhǎng)。項(xiàng)目的重構(gòu),資源的重組,也是資源和權(quán)利的再分配。

一、目標(biāo)

梳理項(xiàng)目工程結(jié)構(gòu),抽離基礎(chǔ)層和中間層。

  1. 保證所有第三方庫管理、基礎(chǔ)庫從主工程抽出,可獨(dú)立編譯,減少編譯時(shí)間。

  2. 梳理提供的功能和使用方法,便于各業(yè)務(wù)模塊的調(diào)用。

  3. 讓團(tuán)隊(duì)成員更熟悉公司項(xiàng)目,減少重復(fù)造輪子,提高開發(fā)效率。

二、實(shí)施計(jì)劃

1、實(shí)施說明

  1. 專門建立一個(gè)組件化的分支組,組件化的主分支和多個(gè)改動(dòng)分支。組件化的主分支,以周為單位,進(jìn)行review和合并代碼使用,并標(biāo)記tag和提交測(cè)試,以便改動(dòng)可以隨版本發(fā)布,建議專人負(fù)責(zé)管控。
  2. 每次都小步改動(dòng)和改動(dòng)單一性(如調(diào)整文件路徑、修改工程名稱、改動(dòng)了Pods等單獨(dú)進(jìn)行),并及時(shí)編譯,驗(yàn)證改動(dòng)是否正確,成功后提交。
  3. 盡量在不改動(dòng)代碼邏輯的情況下做調(diào)整。較大的改動(dòng),如修改了邏輯、移動(dòng)了某個(gè)庫到其他工程、改動(dòng)了Pods、刪除了某些文件,可以做些記錄或提交代碼時(shí)做詳細(xì)的說明,以便問題復(fù)查。
  4. 移動(dòng)文件時(shí),注意文件環(huán)境MRC/ARC的變化,如需要請(qǐng)盡量改動(dòng)為ARC。

2、項(xiàng)目工程定義

初步調(diào)整工程目錄結(jié)構(gòu)如下:

基礎(chǔ)層和中間層

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

業(yè)務(wù)組件層

DDEngine: 后續(xù)會(huì)把模型規(guī)整到具體模塊中,部分文件需要抽離到基礎(chǔ)層或中間層,其他暫時(shí)保持不變,后續(xù)抽離封裝網(wǎng)絡(luò)庫。
DDMIX_UI: 暫時(shí)保留,屬于三期。
ddDemo: 將其中的第三方庫、UILib、分類等,下沉到基礎(chǔ)層或中間層外,暫時(shí)保持不變。

基礎(chǔ)層中間層工程通用的目錄結(jié)構(gòu)

以DDManualThirdSDKs為例說明,目錄結(jié)構(gòu)如下:

DDManualThirdSDKs:工程代碼

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

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

一二級(jí)目錄是標(biāo)準(zhǔn)配置,三、四、五根據(jù)需要自行配置。

調(diào)整要點(diǎn)

  1. 每個(gè)工程下都需要建立一個(gè)README.md 文件,寫明工程使用說明,后續(xù)交由指定人員,輪流負(fù)責(zé)管理。
  2. 每個(gè)工程除了依賴更底層庫外,都能獨(dú)立編譯,并無警告??,第三庫可以采用忽略的形式隱藏,自行編寫的代碼必須無警告。
  3. 文件路徑使用真實(shí)路徑,項(xiàng)目目錄和真實(shí)路徑一致,除了工程級(jí)的Frameworks、Products、Pods除外,禁止使用虛擬路徑。

參考擴(kuò)展文檔
1、iOS Workspace 多項(xiàng)目管理
2、iOS多個(gè)Target配置詳情操作
3、iOS工程目錄結(jié)構(gòu)的思考
4、CocoaPods進(jìn)階:詳解私有庫制作
5、iOS工程文件整理

3、整理三方庫統(tǒng)一Pods管理

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

DDManualThirdSDKs工程 CoreCode文件夾下目錄結(jié)構(gòu):

CoreCode:核心代碼

YiGuanFangZhou:YiGuanFangZhou 代碼區(qū)。

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

QQSDK:QQSDK代碼。

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

把pod管理第三方庫有自行封裝的代碼集中到一個(gè)文件下參考目錄結(jié)構(gòu):

DDPodSDKsPackage:工程代碼

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

調(diào)整要點(diǎn)

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

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

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

4、梳理DDDevelopLib私有庫

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

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

CoreCode:核心代碼

DDCategorys:系統(tǒng)分類。
DDData:通用的數(shù)據(jù)。
DDUILib:通用的UI庫,如評(píng)分星星,輪播圖,大圖查看器等。
DDConfigs:宏定義和常量定義項(xiàng)目,如字體適配,顏色值等。
DDFunctionLib:絕對(duì)單純的數(shù)據(jù)處理工具類,靜態(tài)方法,非空判斷、日期字符串和日期對(duì)象的轉(zhuǎn)換等。

調(diào)整要點(diǎn)

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

  2. 主要移動(dòng)文件夾,盡量少的改動(dòng)邏輯,若項(xiàng)目中有存在相同邏輯或需要抽取代碼時(shí),請(qǐng)做好修改記錄和review代碼。

5、Resources文件整理

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

參考目錄結(jié)構(gòu)如下:

Images.xcassets:圖片系統(tǒng)管理器
DDFonts:字體庫
gif:動(dòng)圖管理
Data:數(shù)據(jù)資源文件

plist:plist文件
json:json文件

調(diào)整要點(diǎn)

  1. 將Other Sources虛擬文件夾中的plist整理到Resources中。
  2. 將項(xiàng)目中使用的圖片、Plist文件、音視頻文件,暫時(shí)歸整到Resources文件下。

6、SupportingFiles文件整理

創(chuàng)建真實(shí)目錄SupportingFiles,文件路徑有所變化,請(qǐng)?jiān)陧?xiàng)目配置中調(diào)整,存放系統(tǒng)支持文件如下:

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

三、工期評(píng)估

參照實(shí)施文檔進(jìn)行,初步評(píng)估工期為14天,后續(xù)遇到問題,及時(shí)溝通調(diào)整。


參考工期

四、其他細(xì)節(jié)

  1. 開發(fā)人員的協(xié)調(diào)問題。
  2. 代碼review管控。
  3. 提測(cè),上線進(jìn)度把控。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容