最近在对一些公司以前遗留的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++中有很多语法会干扰到这一分析,导致难以...
这些工具能够帮助开发者更高效地完成重构任务,减少手工操作的工作量。 #### 核心价值与适用人群 《重构:改善既有代码的设计》为中高级程序员提供了一套实用的方法论,尤其适用于那些经常需要维护和升级遗留系统的...
通过以上方法,逆向工程师可以在没有源代码的情况下理解和重构C++程序。这些技巧不仅有助于安全分析师识别和修复软件漏洞,也为研究恶意软件提供了有力的工具。随着技术的进步,逆向工程师们需要不断更新自己的知识...
2. **C++Test**:由Parasoft公司开发的一款功能强大的自动化C/C++单元测试工具,支持代码覆盖率分析等功能。 除了以上提到的工具之外,还有其他流行的单元测试框架,如JUnit(Java)、pytest(Python)等。这些工具...
通过该工具提供的批量替换功能,开发者可以节省大量时间,避免手工替换带来的繁琐和出错的风险。同样,它还支持批量替换文件名,这在统一项目文件命名规则时非常有用,对于大规模的代码重构也是必要的手段。 在编程...
### 学生信息管理系统...- **未来展望**:未来可以考虑进一步完善系统功能,如增加用户权限管理、数据备份与恢复等高级特性,同时探索使用更现代的技术栈(如C++17及以上版本)进行重构,提升系统的性能与用户体验。
重构是eclipse中提高效率的重要工具,下面我们将详细介绍重构快捷键: 1. Alt+Shift+R:重命名 该快捷键可以重命名变量和类,尤其是变量和类的Rename比手工方法能节省很多劳动力。 2. Alt+Shift+M:抽取方法 该...
总的来说,Visual Assist for VS2017是一款值得推荐的编程辅助工具,它通过智能的代码补全、导航、重构以及模板等功能,极大地提升了开发者的生产力,让编程变得更加流畅和高效。无论你是新手还是经验丰富的开发者,...
皮鞋三维CAD系统的开发从底层开始,利用Visual C++ 6.0作为主要开发工具,并采用C++语言编写系统的核心代码。系统核心包括数值计算和面向对象的系统构建,使用OpenGL显示列表来展现鞋楦模型,并通过Windows API和MFC...
OpenCV(开源计算机视觉库)是一个强大的工具,提供了丰富的功能来支持双目视觉的应用。下面我们将深入探讨基于OpenCV实现双目视觉的关键步骤和技术。 1. **手工标定对应点**:在双目视觉系统中,首先需要对两个...
FPGA(Field-Programmable Gate Array)因其可重构性和高性能,常被用于电信、无线通信等领域中的预/后处理和协处理任务,特别是在数字信号处理(DSP)中。在FPGA设计中,DSP系统需要处理大量实时的数据,对时序约束...
- 利用SWTDeginer的代码生成功能,减少手工编写布局代码的工作量。 **3.2 SWT/JFace中的事件模型** SWT和JFace都使用了一种基于监听器的事件处理机制。当某个组件触发事件时,会通知注册在该组件上的监听器,监听...