重构是一项复杂任务
重构,与理论所暗示的相反,是一项非常复杂的任务。书籍和文章通常展示简单函数和小型类的示例,但现实世界与这种肤浅的观点相去甚远。
真实项目承载着历史——一系列随着时间推移做出的决策,这些决策将代码引导至当前状态。通常认为项目缺乏组织或不遵循良好实践,但许多这些决策受到业务压力和快速交付需求的影响。
真实项目的背景
在真实项目中,常见的是遇到包含数千行代码的文件。真正有帮助的是理解模式,领会原始意图,并谨慎行事。
重构与理论大不相同。它不仅仅是更改类、结构体或文件的名称——涉及许多变量。
一些有帮助的技巧
- 识别重复代码
- 将抽象移动到辅助函数
- 进行小而安全的重构,而不是一次性进行大的更改
在其他语言中,通常会将大文件拆分为多个类。但在Go中,语言的结构使这个过程变得非常容易。
Go中的重构
Go语言在重构方面提供了很大帮助:
- 包级函数
- 包级结构体
- 即使没有类,也能轻松隔离辅助函数
此外,使用好的IDE会带来巨大差异——它使得导航、测试和安全重构变得更加容易。
重构更多是关于理解代码的上下文,而不仅仅是重写函数。这是一个尊重项目历史并逐步构建更好内容的过程。