refactoring相关内容
我已经阅读了很多关于代码重构和避免 if else 语句的主题.实际上,我有一堂课使用了很多 if - else 条件. 更多细节:我正在使用 pull 解析器,在我的soap 响应的每一行上,我将检查是否有我感兴趣的标签,如果没有,请检查另一个标签等: if(eventType == XmlPullParser.START_TAG) {soapResponse= xpp.getName
..
我正在开发一个大型 C++ 系统,该系统已经开发了几年.为了提高现有代码的质量,我们参与了一个大型的长期重构项目. 你知道一个可以帮助我用 C++ 编写单元测试的好工具吗?也许类似于 Junit 或 Nunit 的东西? 对于在没有单元测试的情况下编写的模块编写单元测试的方法,谁能给出一些好的建议? 解决方案 对遗留代码应用单元测试是非常重要的原因 有效处理遗留代码 已编写.M
..
给定软件...... 系统由几个子系统组成 每个子系统由几个组件组成 每个组件都使用许多类实现 ...我喜欢为每个子系统或组件编写自动化测试. 我不会为组件的每个内部类编写测试(除非每个类都有助于组件的公共功能,因此可以通过组件的公共 API 从外部进行测试/测试). 当我重构一个组件的实现时(我经常这样做,作为添加新功能的一部分),因此我不需要改变任何现有的自动化测试
..
我希望有人尝试解释这些之间的区别.更具体地说,示例使用场景. 我正在重构一些 Windows Form 代码,并且一个 Form 在 Form_Load() 事件和 中都有一些代码protected override void OnLoad() 事件调用 base.OnLoad(e); 现在我跟踪了它,Override 首先触发,然后立即触发事件版本. 那么,通常使用哪一种,为什么?
..
以下是我正在尝试实施的解决方案 /*** 点的定义.*类点{* int x;* int y;* 点(){ x = 0;y = 0;}* Point(int a, int b) { x = a;y = b;}* }*/公共课解决方案{公共 int maxPoints(Point[] 点) {整数最大值=0;如果(点数.长度== 1)返回 1;for(int i=0;imax)最大=科尔;}别的{*
..
我需要从广义上重构代码.我知道从 Eclipse IDE 内部我可以重构我的类.但是有没有可以在java项目中使用的API,以便我可以通过代码动态重构项目? 我需要一些关于如何实现以下目标的想法:一个调用所有 Eclipse 重构的程序,以便在循环中重命名和移动以一次性重构整个项目! 我不想通过扩展重构类来引入新的重构类型.我只想以编程方式调用它们. 解决方案 下面的答案很好,
..
我有一个大型 Eclipse 项目,其中存在多个类,尽管它们已不再在任何地方使用,但从未被标记为 @Deprecated. 如何轻松找到所有这些? 解决方案 我也喜欢用 UCDetector: UCDetector(不必要的代码检测器)是一个开源 eclipse 插件工具,用于查找不必要的(死的)公共 Java 代码.它还尝试使代码成为最终的、受保护的或私有的. 奖励:它
..
ReSharper 喜欢指出每个 ASP.NET 页面的多个可以设为静态的功能.如果我确实让它们静态,它对我有帮助吗?我应该将它们设为静态并将它们移至实用程序类吗? 解决方案 静态方法与实例方法 静态和实例C# 语言规范的成员 解释了差异.通常,静态方法相对于实例方法可以提供非常小的性能增强,但仅限于在某些极端情况下(参见 this answer一些更多的细节). FxCop 或代
..
在单元测试中,setup 方法用于创建测试所需的对象. 在那些设置方法中,我喜欢使用断言:我知道我想在那些中看到什么值对象,我喜欢通过断言来记录这些知识. 在最近关于 单元测试调用其他单元测试在stackoverflow上,总体感觉似乎是单元测试不应该调用其他测试:这个问题的答案似乎是你应该重构你的设置,所以测试用例不相互依赖. 但是“setup-with-asserts"和单元
..
我正在整理一些旧代码,这些代码到处使用“幻数"来设置硬件寄存器,我想使用常量而不是这些数字来使代码更具表现力(实际上它们会映射用于记录寄存器的名称/值). 但是,我担心随着更改量的增加,我可能会打破魔幻数字.下面是一个简化的例子(寄存器组更复杂): const short mode0 = 0;const 短模式 1 = 1;const short mode2 = 2;const short
..
我正在重构一个应用程序以使用 androidx.我一直在努力摆脱所有不支持它的库.我以为我已经删除了所有使用支持库的库,但看起来仍有一些东西在导入它.我现在收到错误: AGPBI: {"kind":"error","text":"程序类型已经存在:android.support.v4.os.ResultReceiver$MyResultReceiver","sources":[{}],"to
..
如何从 gcc C 代码构建 AST(抽象语法树)以进行一些转换,如下所示,然后再次将代码复制(生成)为 C 语法? if(condition_1){//代码行1}#ifdef 表达式_1否则如果(条件_2){//代码行2}#万一 进入 bool test = condition_1;如果(睾丸){//代码行1}#ifdef 表达式_1if(!(test) && condition_2){
..
我的目标是以编程方式调用 Refactor >>为 Java 源文件中的方法重命名 Eclipse 命令.重命名方法也应将更改应用于使用/引用此方法的所有实例. 我相信 JDT 有一个 Refactoring API,但找不到相同的文档或教程. 有人能指出我正确的方向吗. 编辑:运行时不需要更改. 解决方案 我认为你最有前途的方法是去 eclipse 源代码. 下载
..
我知道我做得不对,但我也知道有一种方法可以做到这一点.我正在尝试尽可能通用和抽象,否则我的代码会变得非常混乱.所以我在这里也使用了策略模式,即 GetAggregateClient() 方法. 我想要一个名为 AbstractAggregate 的抽象类,以便它使用泛型.泛型类型将是一系列数据类(BlogItem、ResourceItem 和 AskItem),它们都继承自 ListItem
..
我们的代码库中有几个空的抽象类.我觉得那很丑.但除了这个非常愚蠢的原因(丑陋),我是否应该重构它(例如,变成空界面)? 否则,代码是健壮的并且经过良好测试.所以如果只是出于“审美"的原因,我会通过,让空的抽象类保留. 你怎么看? 编辑: 1) 通过“空抽象类",我的意思是: 公共抽象类EmptyAbstractClass {} 2)“空"的原因:休眠.我根本不掌握这个持
..
我的处境非常糟糕.我丢失了我的源代码,我的客户需要在应用程序中进行一些更改.以编辑一个程序集为例:Test.dll 然后添加一行代码,最后重新编译 所以我的问题是:- 可以这样做吗?- 如果可能,编辑程序集然后重新编译它的好工具是什么? 解决方案 是的,get ILSpy,它有能力使用 .csproj 和所有内容将程序集保存到磁盘.这使得在 Visual Studio 中打开和重新编
..
您使用什么工具在大型 Java 项目中查找未使用/死代码?我们的产品已经开发了几年,手动检测不再使用的代码变得非常困难.然而,我们会尽量删除尽可能多的未使用代码. 对一般策略/技术(特定工具除外)的建议也表示感谢. 编辑:请注意,我们已经使用了代码覆盖工具(Clover、IntelliJ),但这些工具帮助不大.死代码仍然有单元测试,并显示为覆盖.我想一个理想的工具可以识别几乎没有其他代
..
我知道我做得不对,但我也知道有一种方法可以做到这一点.我正在尝试尽可能通用和抽象,否则我的代码会变得非常混乱.所以我在这里也使用了策略模式,即 GetAggregateClient() 方法. 我想要一个名为 AbstractAggregate 的抽象类,以便它使用泛型.泛型类型将是一系列数据类(BlogItem、ResourceItem 和 AskItem),它们都继承自 ListItem
..
我们的代码库中有几个空的抽象类.我觉得那很丑.但除了这个非常愚蠢的原因(丑陋),我是否应该重构它(例如,变成空界面)? 否则,代码是健壮的并且经过良好测试.所以如果只是出于“审美"的原因,我会通过,让空的抽象类保留. 你怎么看? 编辑: 1) 通过“空抽象类",我的意思是: 公共抽象类EmptyAbstractClass {} 2)“空"的原因:休眠.我根本不掌握这个持
..
我的处境非常糟糕.我丢失了我的源代码,我的客户需要在应用程序中进行一些更改.以编辑一个程序集为例:Test.dll 然后添加一行代码,最后重新编译 所以我的问题是:- 可以这样做吗?- 如果可能,编辑程序集然后重新编译它的好工具是什么? 解决方案 是的,get ILSpy,它有能力使用 .csproj 和所有内容将程序集保存到磁盘.这使得在 Visual Studio 中打开和重新编
..