Prefactor (http://www.artima.com/weblogs/viewpost.jsp?thread=147332)
老美真是会制造概念(不过我想这仍然不同于国内有些人, 只有概念而没有概念背后的东西, 说的俗一点, 总是给你玩虚的), refactor就是一个创造的单词, 通过Martin Flower相信大家已经相当的熟悉了, 国内翻译为重构. 这次又在artima上面看到一个prefactor, 按照我得理解, 翻译为”前构”也许比较合适
文章给了一些prefactor的大纲, 列举如下:
1. 策略和实现分开(Separate Policy from Implementation)
这是减少在refactor实施”方法提取”的手段. 实施策略和代码分开, 在代码中你就可以定义更多的方法. 从而不必在重构的时候事实更多的方法提取.(虽然可以通过工具支持实施方法提取, 但是那至少证明你原来的代码存在缺陷, 能预先避免当然更好; 而且不是所有的都可以通过方法提取所能够实现的)
2. 最容易调试的代码就是不写代码(The Easiest Code to Debug is That Which is Not Written)
你要实现的概念可能在有些开源的项目中已经被别人完美的实现了, 所以很多的情况下你不需要从头作起, 站在巨人的肩上会使你更加的伟大. 这意味着编程的首要工具是Google.
3. 工欲善其事, 必先利其器(Think About the Big Picture)
一般的编码是在一定的框架下实施的(比如J2EE, .NET), 所以首先要熟悉这些环境和框架所提供的功能.
refactor是敏捷开发的重要内容, 作者也把prefactor放在敏捷开发的流程中. Hurb sutter 在C++ Coding Standard中强调不要过早的优化, 但同时也不要过早的悲观(不理会优化), 是为了寻求一个恰到好处的平衡点. 我想 refactor和prefactor也是为了找到那个平衡点吧.