首先,“重构”和“重写”是两个几乎完全不一样的概念
- 相同之处:
都是将原有代码进行整理,重新编排,改写代码。 - 不同之处:
重写是将原有功能用一种更合适(或考虑性能、或考虑维护等因素)的方式进行重新构造,主要顾虑的是程序的总体功能上的相同,而不考虑具体每一个部分的代码实现是否与原来构成
重构是将原有的模块内的逻辑实现进行重新整理编写(同样考虑性能、维护难度等因素),需要考虑重构后的模块,在接口和功能上的兼容。因此也会有小模块的重构和大模块的重构的区别,小模块的重构改动的内容限制较多,但因为需要熟悉的模块功能和接口内容较少,所以难度同样较小;而大模块的重构则刚好相反。 - 总结:重写主要考虑的是功能上的相同,而重构则需要多考虑上输入输出上的兼容。
重构并没有那么高不可攀
我们首先需要有一个不要过分畏惧的认识,其实重构并没有那么困难,只要你对代码的实现功能以及该模块或函数的输入输出内容有充分的认识,就可以对你的代码进行重构了。当然了,要定义你重构后的代码是否比原来的代码要好还是不好,就需要一定的软件工程知识和经验了。