假设你编写了可以完成某个特定任务的一组代码,记为 block A。随着开发的推进,你发现 block A 在很多地方都能用到。这时候,你该怎么办?一种简单粗暴的解决方案便是将 block A 复制粘贴到需要的地方。过了一段时间之后,你发现需要对 block A 进行改动,改动的原因可能是发现了 bug,也可能是想优化 block A。这时候,如果 block A 的副本散落在程序的各个角落,你需要对每一处的 block A 进行修改。这种修改方式不仅易于出错,而且容易引入难以发现的 bug。另外,对于后期的程序维护来说简直就是噩梦。