对软件代码做任何改变以增加可读性或者简化结构而不影响输出结果
增加可读性、增加可维护性、可扩展性
通过调整系统结构(Rank、Role、Relation、Rule)来修复系统质量问题而不影响整体系统能力
修复质量问题(性能、可用性、可扩展。。。)
代码重构 | 架构重构 | |
---|---|---|
基本做法 | 调整代码 | 调整架构 |
目的 | 优化代码,增加代码的可读性、可维护性、可扩展性 | 修复架构质量问题 |
是否修复问题 | 否 | 是 |
是否改变系统能力 | 否 | 否 |
手段 | 引入设计模式 | 引入缓存,分库分表 |
对部分业务或者功能进行优化,不影响系统架构
优化系统架构,整体提升质量,架构重构会影响架构的4R定义
不要试图解决所有问题,抓住关键问题
问题分类:问题收集列表可能有100条,不要全部想着通过架构重构解决,分门别类,找出需要架构重构解决的问题
要有明确的时间点和里程碑,不要说“慢慢优化”
独立版本:不要混在业务版本里面做架构重构,否则不好协调资源
需要有量化的指标来衡量,不能说“提升xxx质量”
有的放矢:重构只解决第1个问题
说服业务方和老板
把“可扩展性”转换为“版本开发速度很慢”,然后给出对应的项目数据
如果没有数据,就举极端案例,例如某个小功能,开发测试只需要1周,但是因为其他系统等原因,等了1个月才上线
说服其他团队
思考对其他团队的好处,才能让人配合
汇报和总结的时候,把其他团队也带上
合纵:告诉产品经理和项目经理极端案例,设计2周、开发5天、1个月才能上线
连横:P业务线上问题大大减少,P业务不会被其他业务影响
将问题分类,一段时间集中处理一类问题
避免对照Excel表格,一条一条的解决
分类后排序,按照优先级顺序来落地
避免见缝插针式的安排重构任务
每一类问题里面先易后难
把容易的问题解决掉,增强信心
架构重构是否可以引入新技术?—>可以,但尽量少,架构重构要求快准
业务不给时间重构怎么办?—>会哭的孩子有奶吃
其他团队不配合怎么办?—>学会利用上级力量
业务进度很紧,人力不够怎么办?—>收集需要重构的证据,技术汇报的时候有理有据