想起之前分享重构(refactoring),有一页幻灯片用到成语“偷梁换柱”。

梁和柱

相当于组件。软件与建筑类似,模块化是必须的。 更合理地,应该是纵向分层次,横向分模块。 纵横的概念,与建筑要怎样类比,没完全相清楚。 层次划分好,接口定义清楚,对软件来说,实际是可以有空中楼阁的。 也就是当底层的模块还未实现,或者还在实现的过程中,上层的模块实际可以先行完成。 现代的建筑,也有类似的过程。例如桥面可以与柱子同时做,最后架在一起即可。 空中楼阁的比喻并不恰当。理论上,空中楼阁也是可以先在一边做好,只是不可能凭空安置。

重构的目标就是换,换一个组件,原因则可能多样化。性能、可维护性、采用新技术等等。

为什么会无意识地选择这个成语? 一直没有深究这个“偷”字。 现在回想,重构的过程,可能最重要的是这个“偷”字。

重构,一定要注意“换”的影响,要在模块化、组件化的基础上,控制影响的范围。 尽量保证一个模块对外的接口,或者说界面,保持不变。 重构的内容,应该只是模块内的实现。 偷,描述了重构的过程,对其他模块的透明性。

如果重构的修改,破坏了原有的界面,导致需要其他模块也同步修改,那么,就不是“偷”了,而是“抢”。

我最讨厌你们这些打劫的了,一点技术含量都没有!
–《天下无贼》