问题标签 [refactoring]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
1773 浏览

unit-testing - 您如何测试/更改未经测试和不可测试的代码?

最近我不得不在旧系统上更改一些代码,其中并非所有代码都有单元测试。
在进行更改之前,我想编写测试,但是每个类都创建了很多依赖项和其他反模式,这使得测试变得非常困难。
显然,我想重构代码以使其更易于测试、编写测试然后更改它。
你会这样做吗?或者您是否会花费大量时间编写难以编写的测试,这些测试将在重构完成后大部分被删除?

0 投票
6 回答
5984 浏览

visual-studio - Visual Studio 重构:删除方法

是否有任何可以进行删除方法重构的 Visual Studio 加载项?
假设您有以下方法:

或者 Result 无效的变体。

重构的目的是将所有对 DoSomething 的调用替换为对 ComputeResult 的调用或使用参数的表达式(如果 ComputeResult 不是方法调用)。

0 投票
4 回答
1673 浏览

.net - 在代码库中查找孤立的方法

我敢肯定我们以前都见过它......一个已经存在一两年的代码库,随着功能的添加和错误的修复,我们最终得到了一些实际上并不存在的代码不再使用。我想知道是否有一种方法(尤其是在带有或不带有第三​​方工具的 VS.NET 中)来搜索代码库并向我展示在代码的其他任何地方从未使用过的方法?

关于这种类型的实用程序,我能想到的一个挑战是在发生隐式类型转换时无法映射回来。但假设这不是问题,我有什么选择?

0 投票
12 回答
2015 浏览

java - 重构掉标记的循环

在我确信带标签的中断/继续在这里完全是“nono”之后,我需要帮助才能从我的代码中删除标签。

我有一个方阵和一个长度相同的向量。向量中已经有一些值,这取决于矩阵中的值,向量在循环中会发生变化。

我希望,代码片段基本上是可以理解的……

请说服我,没有标签的版本更具可读性/更好。

0 投票
6 回答
17976 浏览

c++ - 对 C++ 的良好重构支持

现在,Visual Studio 对 C# 的重构支持非常好(虽然还没有我见过的一些 Java IDE 的一半好),但我真的很想念 C++ 支持。

我见过重构!并且目前正在尝试,但也许你们中的一个人知道更好的工具或插件?


我已经使用Visual Assist X一两个星期了,完全上瘾了。感谢您的提示,我会尝试说服我的老板也让我获得工作许可证。
自从 Visual Assist X 在经过几次特定的重构后不断弄乱我的 Visual Studio 以来,我一直在寻找错误几天,我(和客户支持)花了一周的时间来寻找,但现在让我们说 Visual Assist X 不是与ClipX的良好组合。

0 投票
5 回答
715 浏览

asp.net - 重构现有系统的可测试性

我加入了一个开发产品的团队。该产品已经存在了大约 5 年左右,并且使用 ASP.NET WebForms。随着时间的推移,它的原始架构已经褪色,整个解决方案中的东西变得相对杂乱无章。这绝不是可怕的,但绝对可以使用一些工作;你们都知道我的意思。

自从大约 6 个月前加入项目团队以来,我一直在执行一些重构。其中一些重构很简单,Extract Method、Pull Method Up 等。一些重构更具结构性。后面的变化让我很紧张,因为没有一套全面的单元测试来伴随每个组件。

整个团队都支持通过重构进行结构更改的需要,但我们的项目经理表达了一些担忧,即我们没有足够的测试来进行重构,并确信我们不会将回归错误引入系统。他希望我们首先编写更多测试(针对现有架构),然后执行重构。我的论点是系统的类结构耦合太紧密,无法编写足够的测试,并且在我们执行重构时使用更多的测试驱动方法可能会更好。我的意思不是针对现有组件编写测试,而是针对特定功能需求编写测试,然后重构现有代码以满足这些需求。

有没有人对最佳行动方案有任何经验?我有自己的想法,但想听听社区的一些意见。

0 投票
5 回答
12458 浏览

objective-c - Xcode 的任何 ReSharper 等价物?

我是一个完整的 Xcode/Objective-C/Cocoa 新手,但我学得很快,并且真正开始享受掌握新语言、平台和范例的乐趣。

有一件事是,长期以来一直使用带有 R# 的 Visual Studio,我有点被重构和完成等编码工具宠坏了,据我所知,Xcode 有一些相当有限的内置支持东西。

关于这一点,有没有人知道 Xcode 环境中是否有任何插件或任何可用的插件,它们添加了编码助手,例如从类接口定义自动生成实现框架等?

我怀疑没有,但我想这无济于事。

0 投票
4 回答
20206 浏览

c# - 在列表中查找匹配项的最简洁方法

在列表中查找内容的最佳方法是什么?我知道 LINQ 有一些不错的技巧,但让我们也获得有关 C# 2.0 的建议。让我们为这个通用代码模式获得最佳重构。

目前我使用这样的代码:

或者

0 投票
8 回答
4570 浏览

asp.net-mvc - 重构经典 ASP 的最佳实践?

我必须在一个大型的、旧的、意大利面条式的 ASP 系统中做一些重要的开发。我已经离开 ASP 很长时间了,我将精力集中在 Rails 开发上。

我采取的一个基本步骤是将页面重构为具有有意义名称的子程序和函数,这样至少在文件顶部很容易理解通常发生的事情。

ASP 有没有值得的 MVC 框架?或者如何至少从视图中获取业务逻辑的最佳实践?(我记得那天做了很多包含——这仍然是这样做的方式吗?)

我也很想对业务逻辑进行一些单元测试,但也许我要求太多了?

更新:

项目中有超过 200 个 ASP 脚本,大约有数千行;)哎呀!

我们可能会选择“大改写”,但在那之前,当我在更改页面时,我想花一点额外的时间来清理意大利面。

0 投票
11 回答
11792 浏览

database - 有哪些数据库重构工具?

我正在寻找可以集成到我的 CI 工作流程中的东西。
我听说过dbdeploy但我正在寻找别的东西。我不喜欢 dbdeploy 的原因是我不想在我的服务器上安装 java。

我当然希望该解决方案不涉及将一些 shell 脚本串在一起。