重构的实践要点
重构是一种在不改变软件功能和外部可见性的情况下,为了改善软件的结构,提高软件的清晰性、可扩展性和可重用性而对其进行的改造。以下是重构的一些实践要点:
1.确保有足够的测试
在进行重构之前,应确保有一个可靠的测试机制,这些测试必须能够自我检测。这是因为重构可能会引入新的错误,有了足够的测试可以在第一时间发现这些问题。
2.以小步进行重构
重构应该以微小的步伐进行,这样如果犯了错误,很容易发现并回滚。这样做也可以帮助我们在不改变软件外在表现的前提下,逐步提高代码的可读性和可理解程度。
3.遵循“不要过早发布接口”的原则
在进行重构时,应谨慎修改代码的各种规范,以使重构的过程更加顺畅。不应进行到一半再折回来修改以前的代码。
4.尝试在编写注释之前重构代码
当我们感觉需要撰写注释时,应该尝试重构代码,使其变得更容易理解,从而使得注释变得多余。
5.确保所有测试都完全自动化
所有的测试都应该能够检查自己的测试结果,这样才能确保重构的过程中没有引入新的错误。
6.定期执行测试
我们应该频繁地进行测试,每次测试都应该把测试本身也考虑进去。例如,每天至少执行测试一次。
7.编写未臻完善的测试
我们应该编写未臻完善的测试并实际运行,而不是无尽地等待完美的测试。这样可以在发现问题的同时立即进行修复。
8.考虑可能出错的边界条件
在编写测试时,应该把测试火力集中在可能出现错误的边界条件上。这样可以大大提高测试的效率和准确性。
9.在遇到问题时,先编写单元测试
当我们收到bug报告时,应该先编写一个单元测试来暴露这个问题。这样可以帮助我们更快地定位和解决问题。
10.重构设计
重构也是一种软件架构设计,需要对基本的软件架构和软件设计风格有清晰的了解。例如,可以借鉴Unix编程艺术中的模块原则、清晰原则、简洁原则等。
11.应用设计模式
可以参考23种设计模式以及SOLID原则来进行重构。虽然不一定需要完全了解代码怎么写,但应该了解每一种设计模式背后的设计思想。
12.考虑领域驱动设计(DDD)
DDD是一种模块解耦和分层的思想,可以应用于重构中。例如,可以将API(对外访问层)、Domain(领域层)、Repository(数据源访问代理层)及基础设施层(DB、Redis、HTTP、RPC等)分开设计。
13.使用微服务
在进行大型软件系统的重构时,可以考虑使用微服务的原则,即纵向的调用关系变为横向的,减少函数调用栈深度;不要过度封装,相信用户能找到底层类的实现接口;如果新增某个小的具体功能,涉及的链条越短越好;面向接口编程(虚基类)等。
14.实现云原生
重构时也可以考虑实现云原生的原则,这样可以充分利用云的优势,如弹性扩缩容和容错。
15.利用插件思想
在某些场景下,可以利用插件思想来进行重构,这样可以使软件更加模块化和灵活。
以上就是重构的一些实践要点,希望对你有所帮助。