大型项目中非常重要的一点就是隔离变化, 先分块再分层, 高内聚低耦合是老生常谈, 实际开发过程中总会有一些霰弹式修改, 牵一发而动全身, 还得考虑线上不同版本的兼容问题.
除了要坚持一些基本原则( �比如: ISP 接口隔离原则, OCP 开放封闭原则, DRY 避免重复原则, SRP 单一职责原则, DIP依赖倒置原则等) , 还要重视可追溯性, 能及时找到过于复杂的依赖关系, 跟踪到异常调用路径, 保持警觉和预见性, 把隐患扼杀在萌芽中, 在演变成不可收拾的状况之前�适时重构和重建, 而修改的范围是局限在一定范围之内的, 最好做到热插拔, 起码也要无缝切换, 因为面向用户的服务不能停.
服务的稳定和连续性是底线, 不可能一声令下, 一起升级, 一起重启, 通常线上起码会有至少两个不同的版本, 改接口, 改数据结构都得小心, 被依赖得越多, 影响面越大, 所以项目越大, 历史越长, 用户越多, 开发的胆子越小, 自信只有来源于�优良的设计和实现
封装变化
隔离变化
外置变化
依赖倒置,依赖注入,或将变化放入代码之外的配置中
追溯变化
逐步变化
把大的变化拆散,一点一点试验和试用
可控地向一部分用户开放和应用变化
恢复变化
可以随时 enable 或 disable 一个或一块功能
友好协商
媒体协商,版本协商,特性协商,容量协商,及各种参数协商