关于大型软件重构的一些想法
作者:网络转载 发布时间:[ 2013/7/23 16:22:23 ] 推荐标签:
文件的对应关系不能乱
这里涉及到从branch到main的intergration,你在branch上把一个文件移动了并做了修改,而在main上同样有人做了修改,做intergration的时候,你很容易丢失别人在main上的修改,因为其对应关系并没有被建立起来,也无从merge了。我想不同的SCM工具应该都提供了解决方案的,比如perforce可以在其branchspec中来说明其对应关系。
重构的方法
工作期间拜读过《重构----改善既有代码的设计》,上面讲了许多不错的改善设计的方法与步骤,但是基本没用上。因为关于设计,我们对哪种情况,如何修改之前都已做了研究并有了方案,而那些步骤感觉稍显罗嗦,不是很适用。VisualAssist提供了个重构的模块,在一般规模的代码里用用还可以,但是对于有很多个solution的代码无能为力了。况且这些只是涉及到源代码的重构,我们还有工程/DLL的重构。
我们采取的方法是:针对不同的情况,写perl脚本来自动化一些任务。举个简单点的例子:我修改了一个方法的名字,脚本会搜索所有的代码,自动check-out需要修改的文件,并替换新名字。记得当时写了许多perl脚本来自动化对perforce的调用,VS的调用,对代码,工程文件的修改等等。
一些细节
interface的使用
我们的重构工作对于接口可以说是无所不用其极,而正是大量的使用接口才让这种已经耦合很紧的代码的UI-核心的分离成为可能。比如某个核心层的操作完成之后是调用UI的刷新代码,而把这个刷新操作移到外面又是相当困难的,此时用接口是比较好的做法:
image
pInterface->UpdateUI();
当然还有一些其他的使用接口的方式,但归根结底都是为了分离实现。
使用vsprops
我们用的是VisualStudio,上百个项目都有其各自的设置,而其实很多设置都是差不多的,完全可以把那些一致的设置放到一个vsprops文件中,让每个vcproj文件都引用它。能在很到程度上提高一致性与简洁度。MSDN有其详细的介绍。
虚函数与rebuild。添加,删除虚函数,尤其是基类里的虚函数都会破坏原有的虚表,因此除非rebuild所有可能引用到的代码,不然会产生很奇怪的函数调用,具体可以看这篇:关于虚函数那点破事。
做这种大型软件的重构,让我学到比较多的是:
面对一些大型的软件系统不会犯憷,会比较有自信。
养成自动化的习惯,一些大量的手工操作,会很枯燥,很费时,做的很容易出错而且没有成感,但是把目标转换一下:写个程序把工作自动化,上面那些问题是不是都没了。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11