问题标签 [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 投票
6 回答
1248 浏览

refactoring - 重构的局限性是什么?

我正在研究重构对改进现有软件架构的限制,我很想听听您的经验,您发现重构不足以或仍然太不成熟而无法实现您的目标。

0 投票
11 回答
4350 浏览

refactoring - 您可以对对提高质量产生最大影响的遗留代码库做些什么?

当您在遗留代码库中工作时,随着时间的推移,什么会对提高代码库的质量产生最大的影响?

  • 删除未使用的代码
  • 删除重复代码
  • 添加单元测试以提高覆盖率低的测试覆盖率
  • 跨文件创建一致的格式
  • 更新第 3 方软件
  • 减少静态分析工具(即Findbugs)产生的警告

多年来,该代码库由许多具有不同专业水平的开发人员编写,其中许多领域未经测试,有些无法测试,而无需花费大量时间编写测试。

0 投票
5 回答
507 浏览

c++ - 从原生 C++ 重构代码位的选项?

因此,在谈论性能时,一个常见的评论是,您使用任何可以最快完成工作的语言编写代码。如果特定领域的性能有问题,则用 C/C++ 重写这些位。

但是,如果您从本机 C++ 应用程序开始呢?如果你想用 Python、Ruby、C# 或其他语言编写简单的部分或重构旧的部分,你有什么选择?请记住,在本地和其他端之间传输数据是必须的。能够简单地调用用“更简单”的语言编写的函数,同时将 C++ 类作为数据传递,这将是很美好的。

我们有一个硬壳 Win32 应用程序,如果我们可以用 C# 或其他东西编写新代码或重构旧代码,它将会受益匪浅。其中很少需要 C++ 的复杂性,处理这些小细节会拖累编程过程。

0 投票
7 回答
2451 浏览

html - 将基于表格的 HTML 布局重构为 CSS 的工具?

给定一个 HTML 页面,该页面具有复杂的基于表格的布局和许多重复且浪费的标签,例如:

是否有工具可以帮助将页面重构为更紧凑的形式?例如,自动生成 CSS 样式和选择器的工具?将表格转换为 div 布局?

只是为了说明问题的顺序,我正在查看的页面超过 8000 行 HTML 和 JavaScript,不计算图像是 500Kb !


更新:在重新。“放弃,从头开始”评论。在现实世界中,这意味着什么?打印页面,扫描它,在 Dreamweaver 中将其设置为背景图像,然后开始?严重地?这真的会比重构更有效吗?


更新:我不是在贬低“从头开始跟踪它”,也不是暗示 Dreamweaver 无论如何都是我选择的工具。我很惊讶重构布局被认为是一个棘手的问题。

0 投票
10 回答
15396 浏览

c# - 重构代码:什么时候做什么?

自从我开始使用 .NET 以来,我一直在创建 Helper 类或 Partial 类来将代码定位并包含在它们自己的小容器等中。

我想知道的是使代码尽可能干净和优美的最佳实践。

显然干净的代码是主观的,但我说的是何时使用事物(而不是如何使用它们),例如多态性、继承、接口、类以及如何更恰当地设计类(使它们更有用,而不仅仅是说' DatabaseHelper',因为有些人认为代码中的这种不良做法有wiki 的味道)。

是否有任何资源可以帮助做出这种决策?

请记住,我什至没有开始学习计算机科学或软件工程课程,而且现实生活中的教学资源相当有限。

0 投票
21 回答
166853 浏览

java - 如何在 Java 项目中查找未使用/死代码

您使用什么工具在大型 Java 项目中查找未使用/死代码?我们的产品已经开发了几年,手动检测不再使用的代码变得非常困难。但是,我们确实尝试删除尽可能多的未使用代码。

对一般策略/技术(特定工具除外)的建议也值得赞赏。

编辑:请注意,我们已经使用了代码覆盖工具(Clover、IntelliJ),但这些帮助不大。死代码仍然有单元测试,并显示为已覆盖。我想一个理想的工具会识别出几乎没有其他代码依赖于它的代码集群,从而允许手动检查文档。

0 投票
4 回答
16453 浏览

c# - 您使用什么工具和技术来查找死代码?

您使用什么工具和技术在 .NET 中查找死代码?

过去,我使用 Obsolete 属性修饰了方法(传递 true 以便编译器会发出错误,如MSDN中所述)。

我有兴趣看到其他人的建议(除了 FxCop 或 ReSharper 等工具)。我想确保我不会错过其他有用的工具。

0 投票
6 回答
8318 浏览

oop - 耦合、内聚和得墨忒耳定律

墨忒耳法则表明你应该只与你直接知道的物体交谈。也就是说,不要执行方法链接来与其他对象对话。当您这样做时,您正在与中间对象建立不正确的链接,将您的代码不恰当地耦合到其他代码。

那很糟。

解决方案是让您知道的类本质上公开简单的包装器,将责任委托给与之有关系的对象。

那挺好的。

但是,这似乎导致班级凝聚力低。它不再只是简单地负责它所做的事情,而且它还具有某种意义上的委托,通过复制其相关对象的接口部分来降低代码的内聚性。

那很糟。

真的会降低凝聚力吗?是两害相权取其轻吗?

这是发展的灰色地带之一,您可以在其中讨论界限在哪里,或者是否有强有力的、有原则的方法来决定在哪里划定界限以及您可以使用什么标准来做出决定?

0 投票
72 回答
254722 浏览

vim - 你的 .vimrc 中有什么?

Vi 和 Vim 允许非常棒的自定义,通常存储在.vimrc文件中。程序员的典型功能是语法高亮、智能缩进等。

你还有什么其他的高效编程技巧,隐藏在你的 .vimrc 中?

我最感兴趣的是重构、自动类和类似的生产力宏,尤其是对于 C#。

0 投票
3 回答
523 浏览

python - 清除列表

我发现我无法清除列表很烦人。在这个例子中:

我第二次将 a 初始化为一个空白列表,它创建了一个列表的新实例,它在内存中的不同位置,所以我不能用它来引用第一个,更不用说它效率低下。

我可以看到保留相同指针的唯一方法是执行以下操作:

不过,这似乎很冗长,有没有更好的方法来解决这个问题?