refactoring相关内容

如何避免很多 if else 条件

我已经阅读了很多关于代码重构和避免 if else 语句的主题.实际上,我有一堂课使用了很多 if - else 条件. 更多细节:我正在使用 pull 解析器,在我的soap 响应的每一行上,我将检查是否有我感兴趣的标签,如果没有,请检查另一个标签等: if(eventType == XmlPullParser.START_TAG) {soapResponse= xpp.getName ..
发布时间:2021-12-12 13:14:43 Java开发

C++ 代码的单元测试 - 工具和方法

我正在开发一个大型 C++ 系统,该系统已经开发了几年.为了提高现有代码的质量,我们参与了一个大型的长期重构项目. 你知道一个可以帮助我用 C++ 编写单元测试的好工具吗?也许类似于 Junit 或 Nunit 的东西? 对于在没有单元测试的情况下编写的模块编写单元测试的方法,谁能给出一些好的建议? 解决方案 对遗留代码应用单元测试是非常重要的原因 有效处理遗留代码 已编写.M ..
发布时间:2021-12-09 18:42:14 C/C++开发

应该测试内部实现,还是只测试公共行为?

给定软件...... 系统由几个子系统组成 每个子系统由几个组件组成 每个组件都使用许多类实现 ...我喜欢为每个子系统或组件编写自动化测试. 我不会为组件的每个内部类编写测试(除非每个类都有助于组件的公共功能,因此可以通过组件的公共 API 从外部进行测试/测试). 当我重构一个组件的实现时(我经常这样做,作为添加新功能的一部分),因此我不需要改变任何现有的自动化测试 ..

Form_Load() '事件' 或覆盖 OnLoad()

我希望有人尝试解释这些之间的区别.更具体地说,示例使用场景. 我正在重构一些 Windows Form 代码,并且一个 Form 在 Form_Load() 事件和 中都有一些代码protected override void OnLoad() 事件调用 base.OnLoad(e); 现在我跟踪了它,Override 首先触发,然后立即触发事件版本. 那么,通常使用哪一种,为什么? ..
发布时间:2021-12-08 13:54:56 C#/.NET

给定二维平面上的 n 个点,找出位于同一条直线上的最大点数

以下是我正在尝试实施的解决方案 /*** 点的定义.*类点{* 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 重构 API?

我需要从广义上重构代码.我知道从 Eclipse IDE 内部我可以重构我的类.但是有没有可以在java项目中使用的API,以便我可以通过代码动态重构项目? 我需要一些关于如何实现以下目标的想法:一个调用所有 Eclipse 重构的程序,以便在循环中重命名和移动以一次性重构整个项目! 我不想通过扩展重构类来引入新的重构类型.我只想以编程方式调用它们. 解决方案 下面的答案很好, ..
发布时间:2021-12-06 15:27:03 Java开发

在 Java Eclipse 项目中查找未使用的类

我有一个大型 Eclipse 项目,其中存在多个类,尽管它们已不再在任何地方使用,但从未被标记为 @Deprecated. 如何轻松找到所有这些? 解决方案 我也喜欢用 UCDetector: UCDetector(不必要的代码检测器)是一个开源 eclipse 插件工具,用于查找不必要的(死的)公共 Java 代码.它还尝试使代码成为最终的、受保护的或私有的. 奖励:它 ..
发布时间:2021-12-06 15:24:05 Java开发

方法可以静态化,但应该这样吗?

ReSharper 喜欢指出每个 ASP.NET 页面的多个可以设为静态的功能.如果我确实让它们静态,它对我有帮助吗?我应该将它们设为静态并将它们移至实用程序类吗? 解决方案 静态方法与实例方法 静态和实例C# 语言规范的成员 解释了差异.通常,静态方法相对于实例方法可以提供非常小的性能增强,但仅限于在某些极端情况下(参见 this answer一些更多的细节). FxCop 或代 ..
发布时间:2021-12-02 13:51:50 C#/.NET

单元测试:在设置方法中使用断言是一个好习惯吗?

在单元测试中,setup 方法用于创建测试所需的对象. 在那些设置方法中,我喜欢使用断言:我知道我想在那些中看到什么值对象,我喜欢通过断言来记录这些知识. 在最近关于 单元测试调用其他单元测试在stackoverflow上,总体感觉似乎是单元测试不应该调用其他测试:这个问题的答案似乎是你应该重构你的设置,所以测试用例不相互依赖. 但是“setup-with-asserts"和单元 ..
发布时间:2021-11-30 11:41:03 其他开发

在 C 中构建时断言表达式的方法

我正在整理一些旧代码,这些代码到处使用“幻数"来设置硬件寄存器,我想使用常量而不是这些数字来使代码更具表现力(实际上它们会映射用于记录寄存器的名称/值). 但是,我担心随着更改量的增加,我可能会打破魔幻数字.下面是一个简化的例子(寄存器组更复杂): const short mode0 = 0;const 短模式 1 = 1;const short mode2 = 2;const short ..
发布时间:2021-11-30 11:18:56 其他开发

程序类型已经存在:android.support.v4.os.ResultReceiver$MyResultReceiver

我正在重构一个应用程序以使用 androidx.我一直在努力摆脱所有不支持它的库.我以为我已经删除了所有使用支持库的库,但看起来仍有一些东西在导入它.我现在收到错误: AGPBI: {"kind":"error","text":"程序类型已经存在:android.support.v4.os.ResultReceiver$MyResultReceiver","sources":[{}],"to ..
发布时间:2021-11-27 23:43:46 移动开发

如何使用 JDT 以编程方式重命名方法

我的目标是以编程方式调用 Refactor >>为 Java 源文件中的方法重命名 Eclipse 命令.重命名方法也应将更改应用于使用/引用此方法的所有实例. 我相信 JDT 有一个 Refactoring API,但找不到相同的文档或教程. 有人能指出我正确的方向吗. 编辑:运行时不需要更改. 解决方案 我认为你最有前途的方法是去 eclipse 源代码. 下载 ..
发布时间:2021-11-26 17:42:59 Java开发

在 C# 中执行此通用抽象类的最佳方法是什么?

我知道我做得不对,但我也知道有一种方法可以做到这一点.我正在尝试尽可能通用和抽象,否则我的代码会变得非常混乱.所以我在这里也使用了策略模式,即 GetAggregateClient() 方法. 我想要一个名为 AbstractAggregate 的抽象类,以便它使用泛型.泛型类型将是一系列数据类(BlogItem、ResourceItem 和 AskItem),它们都继承自 ListItem ..
发布时间:2021-11-26 17:16:05 C#/.NET

空抽象类是一种不好的做法,为什么?

我们的代码库中有几个空的抽象类.我觉得那很丑.但除了这个非常愚蠢的原因(丑陋),我是否应该重构它(例如,变成空界面)? 否则,代码是健壮的并且经过良好测试.所以如果只是出于“审美"的原因,我会通过,让空的抽象类保留. 你怎么看? 编辑: 1) 通过“空抽象类",我的意思是: 公共抽象类EmptyAbstractClass {} 2)“空"的原因:休眠.我根本不掌握这个持 ..
发布时间:2021-11-26 17:14:07 Java开发

编辑 .NET 程序集并重新编译

我的处境非常糟糕.我丢失了我的源代码,我的客户需要在应用程序中进行一些更改.以编辑一个程序集为例:Test.dll 然后添加一行代码,最后重新编译 所以我的问题是:- 可以这样做吗?- 如果可能,编辑程序集然后重新编译它的好工具是什么? 解决方案 是的,get ILSpy,它有能力使用 .csproj 和所有内容将程序集保存到磁盘.这使得在 Visual Studio 中打开和重新编 ..
发布时间:2021-11-26 12:03:16 C#/.NET

如何在java项目中找到未使用/死代码

您使用什么工具在大型 Java 项目中查找未使用/死代码?我们的产品已经开发了几年,手动检测不再使用的代码变得非常困难.然而,我们会尽量删除尽可能多的未使用代码. 对一般策略/技术(特定工具除外)的建议也表示感谢. 编辑:请注意,我们已经使用了代码覆盖工具(Clover、IntelliJ),但这些工具帮助不大.死代码仍然有单元测试,并显示为覆盖.我想一个理想的工具可以识别几乎没有其他代 ..
发布时间:2021-11-25 15:46:27 Java开发

在 C# 中执行此通用抽象类的最佳方法是什么?

我知道我做得不对,但我也知道有一种方法可以做到这一点.我正在尝试尽可能通用和抽象,否则我的代码会变得非常混乱.所以我在这里也使用了策略模式,即 GetAggregateClient() 方法. 我想要一个名为 AbstractAggregate 的抽象类,以便它使用泛型.泛型类型将是一系列数据类(BlogItem、ResourceItem 和 AskItem),它们都继承自 ListItem ..
发布时间:2021-11-25 09:46:52 C#/.NET

空抽象类是一种不好的做法,为什么?

我们的代码库中有几个空的抽象类.我觉得那很丑.但除了这个非常愚蠢的原因(丑陋),我是否应该重构它(例如,变成空界面)? 否则,代码是健壮的并且经过良好测试.所以如果只是出于“审美"的原因,我会通过,让空的抽象类保留. 你怎么看? 编辑: 1) 通过“空抽象类",我的意思是: 公共抽象类EmptyAbstractClass {} 2)“空"的原因:休眠.我根本不掌握这个持 ..
发布时间:2021-11-25 09:45:03 Java开发

编辑 .NET 程序集并重新编译

我的处境非常糟糕.我丢失了我的源代码,我的客户需要在应用程序中进行一些更改.以编辑一个程序集为例:Test.dll 然后添加一行代码,最后重新编译 所以我的问题是:- 可以这样做吗?- 如果可能,编辑程序集然后重新编译它的好工具是什么? 解决方案 是的,get ILSpy,它有能力使用 .csproj 和所有内容将程序集保存到磁盘.这使得在 Visual Studio 中打开和重新编 ..
发布时间:2021-11-24 11:20:25 C#/.NET