草庐IT

Refactoring

全部标签

java - 重构以将私有(private)字段从一个类移动到它的辅助类?

编辑:我提交了一个Eclipseenhancementrequestforthisrefactoring.有没有办法将私有(private)字段从一个类移动到它的辅助类?下面的chicken-scratchUML显示了我现在正在手动执行的操作。C1类在重构之前具有私有(private)的字段和对Helper对象的私有(private)最终引用。重构后,C1'中对field的所有引用都改为helper.getField()和helper.setfield()视情况而定。classField{}classC1{finalprivateFieldfield;finalprivateHelpe

c++ - 如何处理被认为有更改危险但稳定的代码?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭6年前。Improvethisquestion处理一个大团队的最佳方式是什么,该团队可以访问稳定但不那么漂亮的代码,很容易将错误引入其中?我正在寻找与SVN锁定文件类似的东西。

c++ - 自动将 C++ 类重构为单独的文件

我继承了一个相当大的项目,有几万行,但是以前的开发人员只把它们打包成6个文件(天哪!)...所以为了可读性,我想自动将所有类拆分到它们自己的cpp/h文件中。是否有任何工具能够做到这一点? 最佳答案 为了重构您的C++代码库,您需要的是一个可以解析C++、保留头文件、同时遵循#includes并处理它们的工具。你必须为每对依赖项构建一个“a-depends-on-b”映射,然后你必须对它们进行聚类。最后,您必须能够根据聚类重新生成源代码。并且您想在完整的代码库上执行此操作,而不仅仅是一个编译单元。这是一个很难找到的工具:-}我认为您

c++ - Visual Studio 2012的任何免费C/C++重构工具/插件?

我看到了一些好的商业工具,比如:VisualAssistXCodeRushResharper(.NET)有什么免费的/开源的工具/插件可以做类似的工作吗? 最佳答案 微软的ProductivityPowerTools怎么样? 关于c++-VisualStudio2012的任何免费C/C++重构工具/插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/17314359/

c++ - 有助于最大限度地减少 C++ 程序中宏使用的工具

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭4年前。Improvethisquestion不同的C++风格指南反对使用C预处理器宏。我知道有一些工具可以帮助检测由于使用宏而导致的错误(CPPCHECKER、Check),以及在存在预处理器指令(CSCout、XRefactory)的情况下提供重构的工具。我想知道是否有任何重构工具建议替代C++程序中的宏(如内联函数、常量表达式)。

c++ - 生成用于大规模重构/重命名的 C++ 符号列表

背景我继承了一个遗留的60klocg++项目,我想重构它以在整个项目中强制执行一致的命名约定。问题是否有免费/开源的静态分析工具可以生成以下列表:全局符号类名成员方法(公共(public)/protected/私有(private),如果可能)成员变量静态方法本地符号(可能会忽略这些)我可能遗漏的任何其他符号,但可能会影响代码的阅读者方法我的意图是使用vim来编辑生成的符号列表,然后使用Ruby脚本对符号进行非常粗略的搜索和替换/映射,这样至少命名约定是一致的。这个过程有点难看,我预计初始编译会失败,但如果我能有一组更具可读性的代码,我不介意手动解决问题。大型C++代码库的开发人员使用

c++ - 如何在派生类中存储在基类初始化期间获得的信息?

我的情况是,作为提供数据来初始化基类的副作用,派生类计算了一条信息,该信息稍后必须通过其接口(interface)提供。下面给出了问题的想法,使用bool值作为所需的信息:classbase{public:base(some_initialization_data);//...};classderived:publicbase{public:derived():base(calc_init_data()){}boolcondition_x_occurred()const{//Howtogetattheinformationobtained//duringthecalltocalc_in

c++ - C++ 中的依赖注入(inject)

如何在不使用框架或反射的情况下在C++中显式实现依赖注入(inject)?我可以使用工厂返回auto_ptr或shared_ptr。这是一个好的方法吗? 最佳答案 只需将shared_ptr用于您需要的服务,并为其创建一个setter。例如:classEngine;classCar{public:voidsetEngine(shared_ptrp_engine){this->m_engine=p_engine;}intonAcceleratorPedalStep(intp_gas_pedal_pressure){this->m_en

c++ - 在 C++ 遗留应用程序中重构上帝类的过程或步骤?

此应用程序是由以前的开发人员在不了解任何设计原则(SOLID)的情况下编写的。该应用程序最关键的问题是它具有带有大量switch语句的神类。这种不明智的结构使得应用程序难以维护。当然,根本就没有单元测试。首先在switch语句上,我发现有两个主要的潜在类因应用程序而异。所以我会尝试先构建这两个类,然后将相应的代码移动到神类中的类中。这是正确的方法吗?什么是解决这个问题的好方法?BYW,我有一本书“有效地使用遗留代码”。所以你可以建议我也必须阅读这本书的哪一部分:-) 最佳答案 Whatisagoodprocesstoattackth

c++ - 将多线程类重构为单线程+和多线程

我有一个以这种方式实现的多线程C++类:classMyClass{protected:somemutexmutex;void_unsafeMethod(){...};public:voidsafeMethod{lockerlock(mutex);_unsafeMethod();}}我对此很满意,但注意到在大多数情况下,多线程支持并不是真正必要的,所以我想将其分为两类:一个是线程安全的,一个是不安全的,但性能更高一个。问题是,有数千行代码使用该类,所以我需要保持接口(interface)相同。当然类名在定义中会发生变化,这取决于是否需要支持机器翻译。我想到了以下内容:解决方案Aclass