探讨团队各自负责下IOS客户端架构设计
IOS谈到开发模式,有以下几种:
按功能开发:MVC, MVVM...
按层次开发: 表示层, 网络层, 本地数据层,逻辑层
这些模式看起来五花八门,归根结底都是为了提高应用系统的”可复用性”和”可扩展性”,然后每个团队实际情况都不一样,配置独立架构师的团队用软件概要设计图,详细设计图来全面且有序的掌控程序员的开发,这种无论是分层开发,还是按功能开发都没有问题。然而实际开发中,功能快速迭代,开发人力不足都会导致架构管理失控,出现代码冗余,模块间循环依赖,改动需求之后莫名其妙的Bug一个接一个。
那么在团队成员各自独立负责一个功能的情况,采用怎么样的功能架构能最多程序上确保代码质量,开发效率,程序健壮性?
写一个Demo来实践下
业务场景
业务逻辑
StartFragment
用例名称:录入注册信息
用例编号:SR001
参与者:用户
前置条件:用户打开APP,进入APP注册页面
基本事件流:
1.用户在输入框中录入称呼,FirstName,LastName,出生日期等数据。
2.用户录入信息后,点击“提交”按扭,用户信息存入Model中,页面跳转至用户信息查看ViewController。
3.用例终止。
其它事件流:
1.在“提交”按扭事件前,用户可随时按“取消”按扭,录入数据被清空。
异常事件流:
1.如果FirstName为空,系统弹出提示“FirstName不能为空”。
2.如果LastName为空,系统弹出提示"LastName不能为空"。
3.如果日期为空且不符合日期格式,系统弹出提示“日期格式错误”。
后置条件:
页面成功跳转至注册信息查看页面
用例名称:查看注册信息
用例编号:SR002
参与者:用户
前置条件:用户录入信息成功,进入注册信息查看页面
基本事件流:
1.页面显示姓名,出生日期等信息。
2.姓名显示格式为称呼+FirstName+LastName,如果称呼为空,则显示FirstName+LastName 。
3.出生日期按月天年格式显示。
4.用例终止。
其它事件流:
无
异常事件流:
1.如果提示数据为空,系统弹出提示“数据加载异常”。
后置条件:
StartFragment EndFragment
无
EndFragment
分层开发每一层都须安排相应开发人员,在没有架构师统一设计的情况下,抽象层的开发人员就完全需要依靠自身的想象力去设计数据存取的接口,这会导致提供功能与实际需要往往存在存在巨大的落差,后期各层都会做出大量的代码重构。
所以我觉得在各自负责的情况下采用分功能开发是大家比较容易接受的一种开发方式。
Demo中我们将采用如下工程文件结构
开始写代码
以上是在开发项目中的一些总结和实践,其中肯定还存在很多问题,我会不断寻求改进的方法,欢迎大家提出建议与意见。