[iOS architect]读《iOS遗留系统重构实践》
来源:互联网 发布:网络基础知识视频 编辑:程序博客网 时间:2024/06/03 03:35
知识点
- 分层(每层职责划分
- 显示层:负责响应用户事件、调用业务层逻辑、数据呈现
- 业务逻辑层:负责业务规划、数据处理
- 数据访问层:负责封装数据库操作
- 网络访问层:与 3 并列,负责网络请求、JSON解析(也就是数据交换的序列化和反序列化)
- 架构
- MVC
- MVVM(该抽象的名称缩写,职责体现不够明确)
- VIPER
- 原则
- 单一职责
- 关注点分离
- 高内聚低耦合
实践点
解除View直接CoreData API调用(解耦:建立数据访问层,使用Realm实现)
方案选型的风险点评测:
- 重写:
a. 范围不可控——遗留系统的难点就在于牵一发而动全身,影响范围极广。稍不留神,重写的工作就会如野火燎原般蔓延开来,不可收拾。
b. 长时间无法上线——在整个过程中,直到最后完成的那一刻之前,系统会处于一直不可用的状态。漫长的时间里,所有的新功能都被阻塞,不能交付。没有哪个产品团队能承担这样的结果。 - 特性分支:(把重写的工作放到分支上完成,其他人继续在主干上开发新特性,直到重写结束再合并回主干)
抽象分支(Branch by Abstraction)+特性开关(Feature Toggle)
a. 当我们想要替换掉系统中的某个组件——名为X——时,首先为X组件创造一个抽象层,这一层里面可能会有大大小小若干接口或是协议,把系统中对X组件的访问都隔离在抽象层之下,系统只调用抽象的接口/协议,不会接触到具体的API实现。
特性开关
a. 特性开关的实现方式:预编译参数、NSUserDefaults、服务器取值、第三方的A/B测试服务.
- 数据迁移
a. 这个无需多说,写个MigrationManager之类的类,用来把数据从CoreData中读出,写到Realm里面去。这个类大概要保留上三四个版本,等绝大部分用户都已经升级到新版本之后才会删掉。
b. 在第一步建立数据访问层的时候,我们创建出了一个特别庞大的PersistenceService,它里面含有所有的数据访问方法。这只是为了方便切换而已,切换完成后,我们还是要根据访问数据的不同,建立一个个小的Repository,然后让ViewModel对象访问Repository读写数据,把PersistenceService删掉。

- 重写:
启发点
第二部分实践点中的重构方案,可以参考。
参考
- iOS遗留系统重构实践
- github-doc
0 0
- [iOS architect]读《iOS遗留系统重构实践》
- 对遗留系统组织重构项目
- 对遗留系统组织重构项目
- 【转】遗留系统重构案例
- 在大型遗留系统基础上运作重构项目
- 在大型遗留系统基础上运作重构项目
- 重构遗留系统时出现的错误-总结
- 代码重构[iOS开发]
- iOS 重绘系统控件
- 大话重构连载:遗留系统——软件工业时代的痛
- 大话重构连载1:遗留系统——软件工业时代的痛
- ios代码重构
- 重构iOS应用
- iOS代码重构
- iOS核心系统编程最佳实践:云端
- iOS核心系统编程最佳实践:性能
- iOS核心系统编程最佳实践:安全
- iOS核心系统编程最佳实践:线程
- IOS 国际化语言包配置(三)
- linux下查看内存使用情况的方法总结(转)
- 235. Lowest Common Ancestor of a Binary Search Tree
- 对象适配器模式
- Java源代码分析之Stack栈
- [iOS architect]读《iOS遗留系统重构实践》
- Linux(5)Linux常用命令_rpm命令
- 模拟银行卡的存取款过程
- linux系统上的weblogic自启动
- ListView OnScrollListener详解
- Android漂亮的对话框项目sweet-alert-dialog
- gearman性能与应用架构设计
- 刷爆欧洲杯,海信带领国产电视走向海外
- jquery 插件写法