没有工具的C++手工重构

最近在对一些公司以前遗留的BCB代码进行重构。

关于C++的重构工具现在到是有两个:SlickEdit与Ref++不过都可以支持VC,不支持BCB。

SlickEdit倒是支持的编译器很多,只是对BCB例外,唉。

看来BCB的地位在C++界也真是尴尬啊,不过也没有办法,谁叫它的底层是VCL,而且不得不使用了一些扩展的C++语法。

其实按道理如果我的python,或者vi、emacs之类的能力强一些,可能自己做一个小型重构的程序,只是现在临时抱佛脚也来不及了。没有办法,只有手工重构了。

不过也好,这样能自己控制好每一步,虽然有一点烦琐。唉,有点怀念JAVA。

有几点经验,也就献曝与大家了:

小步:一定要小步,太大的步骤,以我的智商是不能胜任的了,在将一个760行的long method分解成小函数的过程中,因为有太多的临时变量要传递,我只好用method object来做,结果发现,要与原对象要共享太多的信息,而这些信息只被这个method object与同一个类中另一个long method用到,应该只可以抽象出一个新的类来。结果我就直接去就这两个函数的逻辑进行类的抽象重构工作。结果这一步实在是太大了,让我只是决定要抽象出来的新类的数据成员都千头万绪,不知从何下手。最终放弃,重来,从将一些要传递的临时变量替换成数据成员开始,分解成小函数,再创建新类,移动数据成员与函数开始,总算能够达到目标。

const:用const能验证你的很多想法,让编译器去告诉你是对的还是错的。

编译器:多用编译器,让它来告诉你很多事情,比你在没有什么提示与只凭想象的去重构要好一些。

正则表达式:用正则表达式来搜索,能节约很多的时间。

 

你可能感兴趣的:(C++,c,正则表达式,C#,vc++)