内容简介:组件化开发系列:(一)iOS组件化开发架构设计思考
组件化开发系列:
(一)iOS组件化开发架构设计思考
(二)iOS组件化开发实施一期文档
一、目标
梳理项目工程结构,抽离基础层和中间层。
保证所有第三方库管理、基础库从主工程抽出,可独立编译,减少编译时间。
梳理提供的功能和使用方法,便于各业务模块的调用。
让团队成员更熟悉公司项目,减少重复造轮子,提高开发效率。
二、实施计划
1、实施说明
-
专门建立一个组件化的分支组,组件化的主分支和多个改动分支。组件化的主分支,以周为单位,进行review和合并代码使用,并标记tag和提交测试,以便改动可以随版本发布,建议专人负责管控。
-
每次都小步改动和改动单一性(如调整文件路径、修改工程名称、改动了Pods等单独进行),并及时编译,验证改动是否正确,成功后提交。
-
尽量在不改动代码逻辑的情况下做调整。较大的改动,如修改了逻辑、移动了某个库到其他工程、改动了Pods、删除了某些文件,可以做些记录或提交代码时做详细的说明,以便问题复查。
-
移动文件时,注意文件环境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配置文件。
一二级目录是标准配置,三、四、五根据需要自行配置。
调整要点
-
每个工程下都需要建立一个README.md 文件,写明工程使用说明,后续交由指定人员,轮流负责管理。
-
每个工程除了依赖更底层库外, 都能独立编译,并无警告 ,第三库可以采用忽略的形式隐藏,自行编写的代码必须无警告。
-
文件路径使用真实路径,项目目录和真实路径一致,除了工程级的Frameworks、Products、Pods除外,禁止使用虚拟路径。
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等
调整要点
-
DDManualThirdSDKs工程下,创建DDManualThirdSDKsREADME.md,做好第三方库记录和说明,再将DDManualThirdSDKs打包成一个私有库,用Pods管理。
-
移除不使用的旧库,有重大功能变更的库,给出升级或替换或保持现状的建议。
-
把所有使用的三方库,梳理进一个在线表格。三方库的使用版本、最高版本、 主要功能、哪些模块使用 (全部、多个模块、单独模块)、依赖库、备注项,后续有指定人员维护。
4、梳理DDDevelopLib私有库
自行封装的私有库,作为整个工程的基础库,不与具体的业务耦合,如系统类分类、数据处理类、通用UI组件、宏定义和常量定义等。做成私有库,交给Pods管理。如ddDemo中的VerifyUpdate、UILib、DDAppkit、Common、Categorys、Function、DDMonkey等。
CoreCode文件夹主要文件分类如下:
DDPodSDKsPackage:工程代码
AFNetworkingPackage:AFNetworking 封装代码(根据需要封装)。
SDWebImagePackage:SDWebImage 封装代码。
WechatSDKPackage:DDWeChatPay、WeixinService等
调整要点
-
新增DDDevelopLibREADME.md,管理库能提供的功能,使用说明,修改说明,后续有指定人员维护。
-
主要移动文件夹,尽量少的改动逻辑,若项目中有存在相同逻辑或需要抽取代码时,请做好修改记录和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天,后续遇到问题,及时沟通调整。
参考工期
四、其他细节
-
开发人员的协调问题。
-
代码review管控。
-
提测,上线进度把控。
作者:择势勤
链接:https://www.jianshu.com/p/599e97b63af7
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 组件化之路—集成组件SDK
- Android组件化入门:一步步搭建组件化架构
- Android快速开发框架,基础库,样式库,组件化,组件集成
- Android组件化方案及组件消息总线modular-event实战
- 组件化实践
- 组件化架构漫谈
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Essential PHP Security
Chris Shiflett / O'Reilly Media / 2005-10-13 / USD 29.95
Being highly flexible in building dynamic, database-driven web applications makes the PHP programming language one of the most popular web development tools in use today. It also works beautifully wit......一起来看看 《Essential PHP Security》 这本书的介绍吧!
CSS 压缩/解压工具
在线压缩/解压 CSS 代码
UNIX 时间戳转换
UNIX 时间戳转换