什么时候不应该重构?

2023-12-27

我们都知道重构很好,我和下一个人一样喜欢它,但是你有真实的案例吗?not重构?

像时间关键的东西或同步之类的东西?技术或人为原因同样受欢迎。真实案例场景和经验优先。

Edit:从迄今为止的答案来看,不重构的唯一原因似乎是金钱。我的问题主要与这样的问题有关:假设您想执行“提取方法”,但如果添加额外的函数调用,您将使代码速度稍慢并阻碍非常严格的同步。只是为了让您了解我的意思。

我有时听到的另一个原因是“其他习惯当前代码布局的人会对你的更改感到恼火”。当然,我怀疑这是一个充分的理由。


我非常热衷于通过重构来保持代码的整洁和可维护性。但你通常想回避重构运行良好的生产模块并且不需要改变。然而,当您确实需要在模块上工作来修复错误或引入新功能时,一些重构通常是值得的,并且不会花费太多,因为您已经致力于进行全套测试并完成发布过程。 (单元测试非常有帮助,但正如其他海报所指出的那样,它只是完整测试套件的一部分。)

更重要的重构可能会使其别人更难找到自己的路围绕新代码,他们可能会对重构做出不利的反应。为了最大限度地减少这种情况,请使用结对编程等方法让其他团队成员参与到该过程中。

更新(8/10):不重构的另一个原因是当您没有以适当的方式接近现有代码库时谦逊和尊重。有了这些品质,你就会倾向于保守,只进行真正能带来改变的重构。如果你过于傲慢地对待代码,你可能最终只是进行更改而不是重构。新方法名称真的更清晰吗?还是旧方法名称在您的应用程序域中具有非常特定的含义?当现有样式符合项目指南时,您是否真的需要根据您的个人风格机械地重新格式化该源文件?结对编程同样可以提供帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

什么时候不应该重构? 的相关文章

  • 你的 .vimrc 中有什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何重构抛出异常的函数?

    假设我正在重构这样的函数 def check ox Option Int Unit ox match case None gt throw new Exception X is missing case Some x if x lt 0 g
  • PHP 中的死代码检测 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 为什么 eclipse-python 没有神奇的重构?

    Eclipse 能够利用编译的字节码来启用 神奇重构 功能 重命名方法 向上和向下跟踪类层次结构以及通过方法调用进行跟踪 存在哪些技术障碍使得 Python 和 Javascript 等语言更难做到这一点 因为动态绑定 Python 是一种
  • moqing静态方法调用c#库类

    这似乎是一个很简单的问题 但我似乎找不到关键字来影响我的搜索 我试图通过模拟此方法调用中的所有对象来进行单元测试 我可以对我自己的所有创作执行此操作 除了这个 public void MyFunc MyVarClass myVar Imag
  • 函数分析问题 - Visual Studio 2010 Ultimate

    我正在尝试分析我的应用程序以监视重构之前和之后函数的效果 我对我的申请进行了分析 并查看了摘要 我注意到Hot Path http msdn microsoft com en us library ms182398 aspx列表没有提到我使
  • 如果只使用一次本地函数,那么使用它们还有什么意义吗?

    想象一下我有这样的代码 public void Foo Do bar work Do baz work Do foobar work 我意识到我可以 而且应该因为它做了不止一件事 将其重构为 public void Foo bar baz
  • NetBeans 重构类:java.lang.NoClassDefFoundError

    我刚刚在使用 NetBeans 时遇到了一个错误 我想发布我的发现 可能这是旧新闻 也许这会让一些人免去调试我刚刚遇到的类似问题的麻烦 我不认为我在这里滥用任何东西 堆栈溢出的 SEO 非常好 我在 NetBeans JavaFX 项目 中
  • 解释重构[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 Question 我的问题是如何教授整理和重构代码的方法和重要性 背景 我最近正在为一位同事进行代码审查 他们对早已消失的同事工作做了一些
  • 我该如何优化 IE7/IE8 的 ajax 应用程序以避免“停止运行此脚本”?

    我的预订引擎在 IE7 中运行非常缓慢 它是 ajaxified 和基于 hash window onchange 的 总共有 5 个步骤 我遇到的主要问题是第 2 步在 IE 中速度非常慢 当用户到达第 2 步时 系统会发出 ajax 请
  • 编写自定义重构脚本的最佳 Java 库是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 保留整个物体 VS 不寻找东西

    我在读福勒的重构书时看到保留整个对象 http martinfowler com refactoring catalog preserveWholeObject html 一种不同的 较新的观点认为这种重构与你应该做的完全相反 整洁代码讲座
  • 使用 vim 重构目录中的类/方法/字符串的有效方法

    到目前为止 我一直在使用查找和替换操作手动重构代码 s stringiwanttoreplace newstring g in vim 但这是一个缓慢而费力的过程 如果我有的话字符串我想更换在特定目录内的许多文件中 我当前 典型的缓慢而费力
  • 使用 shoulda 重构 Rails 模型上的 rspec 测试

    了解后应该匹配器 https github com thoughtbot shoulda matchers通过回答关于属性可访问性测试的另一个 StackOverflow 问题 https stackoverflow com a 11849
  • 静态/强类型和重构

    在我看来 静态 强类型编程语言最宝贵的一点是它有助于重构 如果 当你更改任何 API 时 编译器会告诉你该更改破坏了哪些内容 我可以想象用运行时 弱类型语言编写代码 但我无法想象没有编译器帮助的重构 我无法想象在没有重构的情况下编写数万行代
  • 解开 Knuth 的结:如何重构意大利面条式代码?

    这个问题的灵感来自如何将流程图转化为实施 https stackoverflow com questions 36647765它询问如何通过算法消除goto代码中的语句 这answer https stackoverflow com a 3
  • 如何重构这个 switch 语句?

    string liquidClass string Empty switch cmbLiquidClass Text case LiquidClass1 liquidClass Settings Default LiquidClass1 b
  • Pycharm重构-函数内部重命名

    在 Pycharm 中 可以使用 shift F6 键轻松地在项目范围内重命名变量来重构重命名变量 但它无法在函数内执行此操作 解决方法是使用搜索替换 但由于我已经习惯了重构重命名 我想找到一种在函数内部重构重命名的方法 谢谢阅读 PyCh
  • 这种双重实例是否有害,或者根本没有必要?

    在仔细阅读遗留资源时 我发现了这一点 DataSet myUPC new DataSet myUPC dbconn getDataSet dynSQL Resharper 正确地将其中的 new Dataset 部分 灰显 并建议 删除多余
  • 在列表中查找匹配项的最简洁方法

    在列表中查找内容的最佳方式是什么 我知道 LINQ 有一些不错的技巧 但我们也可以获取有关 C 2 0 的建议 让我们对这个常见的代码模式进行最佳重构 目前我使用这样的代码 mObjList is a List

随机推荐