重构、重新架构、再设计与重写的区别
在稍早的文章评论里,Jon Eaves表达了把重构做为动词过度使用的忧虑。尤其是重构(refactoring)【注1】和重新架构(rearchitecting)之间的界线非常模糊,重构被用作在你回头做第二遍的、任何行为的标签。你明白吗?Jon是对的。
被Martin Fowler定义的重构,是一个非常具体的术语,以数学上等同的具体术语为基础【注2】。重构是关于小的、“行为保留”的增加的、安全步骤。重构不是在应用程序里回头去“填充空白”的借口。
让我们给出一些具体的例子来说明什么不是重构,下面的行为都不被视作重构:
-
“优化”(又称作增加)错误处理。
-
增加日志
-
勉强塞满另一个功能
-
提高测试覆盖率(虽然它非常接近重构了)
...