如何重构一个系统
发现一个很有意思的情况,做系统写代码多年了,遇到的需求基本上是在已有的系统上实现,从头来实现的系统基本上没有。
1 why
无论是从头是实现一个系统,还是维护一个系统,当时实现的技术可能是最先进的、规划的产品逻辑是合理的,随着时间的发展、开发人员的变更、系统的代码质量会逐渐腐化,加个Feature太麻烦,改个Bug涉及模块太多-没有单测不敢随便解,业务方抱怨技术团队响应太慢。是时候重构系统了。
对于技术团队来说,重构能力影响着系统对业务团队的响应速度。很多职位招聘的时候都要求:
● 对已有系统进行重构和优化;
● 对组件的重用、重构有丰富的经验;
● 能够熟练运用各种重构方法;
● 察觉实现问题,提出改进(重构)方案;
● 对框架本身的体系有较为深厚的理解和应用经验,对框架本身有过开发或重构者可优先考虑
……拥有重构能力的技术人员在个人价值方面也有很大的竞争力(^o^)/~
2 how
重构系统的时候,技术人员应该考虑对遗留代码、第三方代码、开源代码、最新技术的合理利用,完全从零开始,在时间上、业务复杂度上都是不允许的。
根据个人开发经验,我认为应该将重构分为:代码重构、模块重构、架构重构3个不同的类型。
代码重构:这个也系统业务关系比较少,更多的是优秀编码规则的遵循和实现。例如:统一的错误异常抛出和处理方案,易于理解的返回值模型,统一的入参验证规则,基于设计模式6大原则的编码,