`
leeseon
  • 浏览: 106995 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

没有工具的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++的自动化重构工具支持一直非常不理想.很多重构到目前为止只能手工进行. 重构工具对语言的支持的一个难点在于对代码引用点的分析查找. C++中有很多语法会干扰到这一分析,导致难以...

    重构-改善既有代码的设计

    这些工具能够帮助开发者更高效地完成重构任务,减少手工操作的工作量。 #### 核心价值与适用人群 《重构:改善既有代码的设计》为中高级程序员提供了一套实用的方法论,尤其适用于那些经常需要维护和升级遗留系统的...

    reverse c++

    通过以上方法,逆向工程师可以在没有源代码的情况下理解和重构C++程序。这些技巧不仅有助于安全分析师识别和修复软件漏洞,也为研究恶意软件提供了有力的工具。随着技术的进步,逆向工程师们需要不断更新自己的知识...

    谈单元测试的方法及工具

    2. **C++Test**:由Parasoft公司开发的一款功能强大的自动化C/C++单元测试工具,支持代码覆盖率分析等功能。 除了以上提到的工具之外,还有其他流行的单元测试框架,如JUnit(Java)、pytest(Python)等。这些工具...

    daima.rar_代码统计

    通过该工具提供的批量替换功能,开发者可以节省大量时间,避免手工替换带来的繁琐和出错的风险。同样,它还支持批量替换文件名,这在统一项目文件命名规则时非常有用,对于大规模的代码重构也是必要的手段。 在编程...

    学生信息管理系统

    ### 学生信息管理系统...- **未来展望**:未来可以考虑进一步完善系统功能,如增加用户权限管理、数据备份与恢复等高级特性,同时探索使用更现代的技术栈(如C++17及以上版本)进行重构,提升系统的性能与用户体验。

    eclipse安装+配置+常见问题+快捷键

    重构是eclipse中提高效率的重要工具,下面我们将详细介绍重构快捷键: 1. Alt+Shift+R:重命名 该快捷键可以重命名变量和类,尤其是变量和类的Rename比手工方法能节省很多劳动力。 2. Alt+Shift+M:抽取方法 该...

    Visual Assist For vs2017

    总的来说,Visual Assist for VS2017是一款值得推荐的编程辅助工具,它通过智能的代码补全、导航、重构以及模板等功能,极大地提升了开发者的生产力,让编程变得更加流畅和高效。无论你是新手还是经验丰富的开发者,...

    皮鞋鞋样CAD系统基础研究与开发.pdf

    皮鞋三维CAD系统的开发从底层开始,利用Visual C++ 6.0作为主要开发工具,并采用C++语言编写系统的核心代码。系统核心包括数值计算和面向对象的系统构建,使用OpenGL显示列表来展现鞋楦模型,并通过Windows API和MFC...

    基于OpenCV的双目视觉

    OpenCV(开源计算机视觉库)是一个强大的工具,提供了丰富的功能来支持双目视觉的应用。下面我们将深入探讨基于OpenCV实现双目视觉的关键步骤和技术。 1. **手工标定对应点**:在双目视觉系统中,首先需要对两个...

    在采用FPGA设计DSP系统中仿真的重要性 (2).pdf

    FPGA(Field-Programmable Gate Array)因其可重构性和高性能,常被用于电信、无线通信等领域中的预/后处理和协处理任务,特别是在数字信号处理(DSP)中。在FPGA设计中,DSP系统需要处理大量实时的数据,对时序约束...

    Eclipse插件开发指南

    - 利用SWTDeginer的代码生成功能,减少手工编写布局代码的工作量。 **3.2 SWT/JFace中的事件模型** SWT和JFace都使用了一种基于监听器的事件处理机制。当某个组件触发事件时,会通知注册在该组件上的监听器,监听...

Global site tag (gtag.js) - Google Analytics