refactoring相关内容

您如何使用 TDD 拆分班级?

我觉得自己在TDD方面还算熟练,甚至被公司认为是“TDD专家",但还是有一些情况我觉得不知道如何正确处理,所以我想听取别人的意见. 我的问题如下:尽管一般来说 TDD 帮助我想到了一个类的核心职责,并将所有其他职责提取到依赖类,但有时我会在一段时间后意识到其中一个类具有多个职责,需要对其进行重构和拆分它分为2个班.这个结论通常是因为该类的测试开始变得复杂或重复.我可以很容易地进行重构以将这个 ..
发布时间:2021-07-05 20:42:21 其他开发

重构问题 XCode 4.0.1

因此,我尝试按照教科书中的步骤在 XCode 中重构类的名称.我确信我做的一切都是正确的,我从 App Store 下载了 XCode.基本上,每当我右键单击 -> 重构 -> 名称 -> 预览时,xcode 都会崩溃.这是错误: /SourceCache/DVTFoundation/DVTFoundation-227/Framework/Classes/Utilities/DVTTask. ..
发布时间:2021-07-05 20:42:15 移动开发

当我尝试在 Xcode 中重构时,出现将文件添加到此工作区中目标的构建阶段的警告

当我尝试通过重命名重构代码时,我经常看到此消息: ***.h 不是此工作区中任何目标的构建阶段的一部分,因此无法重构.将文件添加到此工作区中目标的构建阶段,或在另一个文件中进行选择. 有时,重构仅在重新启动 Xcode 并重新打开项目后才起作用.但是之后就不行了. 解决方案 没有成功找到正确的解决方案,我通过在 Organizer > Projects 中反复删除派生数据来处理 ..
发布时间:2021-07-05 20:42:12 移动开发

ruby - 重构 if else 语句

我曾尝试阅读一些有关重构的教程,但我在条件方面苦苦挣扎.我不想使用三元运算符,但也许应该在方法中提取它?或者有什么聪明的使用地图的方法? detail.stated = if value[:stated].blank?零elsif value[:stated] == "不完整"零elsif 值[:is_ratio] ==“真"价值[:陈述] ==“真"别的apply_currency_incre ..
发布时间:2021-07-05 20:42:09 其他开发

Git:大规模重构保留更改日志

是否有可能在不丢失 Git 更改跟踪的情况下进行涉及移动和重命名多个目录的大规模重构? 解决方案 git 可以很好地处理移动/重命名目录,但是要跟踪这些重命名的更改,您可能需要向正在使用的任何命令添加一些额外的参数,或者设置几个配置选项. 这样做的原因是 git 只存储每次提交时树的状态,而不是为了从一种状态移动到另一种状态而发生的更改.如果您的源代码树中有很多文件,那么您可能需要告 ..
发布时间:2021-07-05 20:42:07 其他开发

重构我的 C# 代码 - Switch 语句

我有以下代码,我目前正在使用......基本上,这个方法为每个任务分配正确的布尔标志(真/假).随着需要添加的任务越来越多......我可以看到 switch 语句将不得不增加以适应每项任务. 必须有一种更简单的方法......保持方法小. 代码:(忘记命名约定,发帖已改) public ClassStructure.User AssignTaskStatusToUser(Class ..
发布时间:2021-07-05 20:42:00 C#/.NET

Autofixture 生成自定义列表

这是我的对象: 公共类符号{私有只读字符串_identifier;私有只读 IList_historicalQuotes;公共符号(字符串标识符,IEnumerablehistoryQuotes = null){_identifier = 标识符;_historicalQuotes = historyQuotes;}}公开课报价{私人只读 DateTime _tradingDate;私有只读十进 ..
发布时间:2021-07-05 20:41:57 其他开发

您如何说服您的经理您的项目需要进行大量重构?

我作为承包商加入了 Rails 项目.该项目已经进行了一年多.代码由大约 10 个不同的开发人员编写,其中大多数也是承包商.他们有不同的代码风格.其中一些来自Java.该代码的 metric_fu 得分很糟糕.许多函数非常长(100 - 300 行).一些函数有大量的逻辑分支、循环和递归.每个请求都会生成大量的 sql 查询.性能非常糟糕.许多从未使用过但从未有机会清理的过时代码.核心架构明显错误 ..
发布时间:2021-07-05 20:41:54 其他开发

WebStorm 将重构范围限制为仅当前文件

编辑:这是我创建的问题的链接 [https://youtrack.jetbrains.com/issue/WEB-21956 ] 是否可以将 WebStorm 的重构范围限制在您发出重构的文件中(默认情况下)? 在这种情况下,我有一个正在编辑的文件,我想重构(重命名)一个变量.WebStorm 然后对整个项目中的所有文件进行搜索.我在网上搜索过这个,我只能找到特定文件夹的范围限制.我希 ..
发布时间:2021-07-05 20:41:51 其他开发

如何从我的代码中删除重复项

我有两种类似的方法.其中一个打印一些东西,其中一个保存一些东西.如您所见,有很多重复的代码.我应该如何重构它并删除此重复项? public static void printSomething(List list) {对于(字符串项目:列表){如果(item.contains(“aaa")){System.out.println("aaa" + item);}如果(item.contains(“ ..
发布时间:2021-07-05 20:41:47 Java开发

如何处理过于复杂的继承代码

自从我在软件公司获得经验后,我发现很难容忍代码结构不整齐,没有任何形式的架构或美感或清晰度,无论它是否有效,即做它应该做的事情. 我发现我总是陷入这样的重构代码中,有时“自费"是我的舒适度与生产力困境所在. 根据您的经验,处理您继承的写得不好的代码的最快方法是什么?写你的或封装/重构那里的东西,费时吗? 解决方案 根据你有多少时间以及代码到底有多糟糕,场景范围从把它全部扔掉,从 ..
发布时间:2021-07-05 20:41:44 其他开发

在 Ruby 中重构

是否有支持 Ruby 或 RoR 重构的程序或 IDE? 解决方案 最好的重构工具是良好的测试覆盖率.如果您的测试覆盖了您的代码并且它们都过去了,您可以进行任何您想要的更改,并且测试将找到您破坏的任何依赖项.这是基于 IDE 的重构工具在 Ruby 中不如其他地方流行的主要原因. ..
发布时间:2021-07-05 20:41:42 其他开发

Visual Studio 代码重构似乎不起作用(例如重命名符号 - f2)

所以我刚刚在 ubuntu 上安装了 1.27.2 版本的 vscode.我也安装了 c++ 的扩展. 一切都很好,只是我似乎无法使用重构操作.具体来说,我想使用重命名符号 (f2). 当我单击一个变量并按 f2 时,什么也没有发生.如果我执行 ctrl+shift+r(重构操作),我总是得到“没有可用的重构". 我检查了键绑定,它显示为“f2": 命令:重命名符号 按键 ..
发布时间:2021-07-05 20:41:39 C/C++开发

我如何重构这个循环?

我有一个应用程序,我将原始数组和列表用于一个名为 Item 的类.出于遗留原因,这些可以互换使用(我也希望这只是一种类型,但它就是这样). 现在我必须添加一个像这样通过 for-each 循环工作的新方法: public void something(Item... items) {对于(项目我:项目){做东西();}}公共无效的东西(列表项目){对于(项目我:项目){做东西();}} ..
发布时间:2021-07-05 20:41:36 Java开发

并行继承层次结构重构

我正在处理并行继承层次结构,我有一个逐步重构的想法,并希望就它是否可行或是否有更好的方法来提出意见. 创建一个 Handler 类,其中包含实现所需特定行为的子项,例如 CarHandler 和子项 vwHandler、fordHandler、bmwHandler 添加对所有组件的调用并对其进行重构,以便子项返回必要的对象.例如调用vwHandler.getDrive会返回vwDriv ..
发布时间:2021-07-05 20:41:30 Java开发

摆脱嵌入式软件中的硬件宏

我正在使用 C 开发嵌入式程序. 有大量的硬件宏,例如 #ifdef HardwareA做一个#万一 它不可读,并且很难用单元测试覆盖所有不同的路径. 因此,我决定将硬件相关代码移动到 arch 文件夹,并使用 makefile 中的宏来决定链接哪个 arch 文件夹.就像在 Linux 内核代码中一样. 但是当我看到 Linux 内核时,我注意到 arch 文件夹中有很多重 ..
发布时间:2021-07-05 20:41:24 其他开发

自动重构工具?

是否有一种工具可以扫描您的代码并根据找到的重复代码段建议要执行的重构? 假设我对 C#/Java 特别感兴趣,但我也对其他语言的工具持开放态度. 解决方案 我们使用 Teamcity with重复查找器 ..
发布时间:2021-07-05 20:41:21 其他开发