代码之家  ›  专栏  ›  技术社区  ›  soc Bhuwan Tripathi

“化妆品”清理旧的,未知的代码。哪个步骤,哪个顺序?侵入性有多强?

  •  7
  • soc Bhuwan Tripathi  · 技术社区  · 15 年前

    StringTokenizers String#split() ,将1.2以前的集合替换为较新的集合,使字段 final

    做“整容清理”时,常见的“低挂果实”是什么(与具有更具侵入性变化的重构相比)?

    11 回复  |  直到 15 年前
        1
  •  7
  •   Reed Copsey    15 年前

    在我看来,“整容”

    我总是通过先处理小的更改来重构。你越能快速地编写出可读性越强的代码,以后就越容易进行结构更改,特别是因为它可以帮助你寻找重复的代码等等。

        2
  •  4
  •   Erick Robertson    15 年前

    这里没有正确或错误的答案,因为这在很大程度上取决于环境。

    如果代码有缺陷、有问题、缺少特性,并且是由不再与公司合作的程序员编写的,那么我可能会重新设计和重写整个代码。我仍然可以引用程序员的代码来解决特定的问题,但它可以帮助我重新组织我头脑中和源代码中的一切。在这种情况下,整个事情可能设计得很糟糕,需要彻底重新考虑。

    对于这两者之间的一切,我将采取你概述的方法。我会先把所有的东西都清理干净,这样我就能看到发生了什么。然后我就开始写那些最需要的代码。我会添加文档,因为我了解它是如何工作的,这样我就可以帮助记住发生了什么。

    最后,请记住,如果您现在要维护代码,它应该符合您的标准。如果不是这样,你应该花点时间把它提高到你的标准——不管需要什么。这将为你节省大量的时间、精力和挫折感。

        3
  •  3
  •   Carl Manaster    15 年前

    最低挂起的化妆品水果是(无论如何,在Eclipse中)shift-control-F。自动格式化是你的朋友。

        4
  •  2
  •   jdehaan    15 年前

    翻转尽可能多的成员和方法 汇编。

    作为第二步,我尝试识别接口。我通过相关类的所有方法中的接口替换具体类。通过这种方式,可以稍微解耦类。

    进一步的重构可以更安全、更局部地完成。

        5
  •  2
  •   Community Mohan Dere    8 年前
        6
  •  2
  •   Fredrik Norlin    15 年前

    从“外观清理”开始,您可以很好地了解代码的混乱程度,再加上更好的可读性,这是一个很好的开始。

        7
  •  2
  •   Kelly S. French    15 年前

    你在正确的轨道上。通过做一些小的修复,你将更加熟悉代码,而更大的修复将更容易处理掉所有的碎片。

    运行工具,如 JDepend , CheckStyle PMD

        8
  •  2
  •   Tony Ennis    15 年前

    我不更改旧代码,只是使用IDE重新格式化它。引入错误或错误的风险太大 删除其他代码现在依赖的bug ! 或者引入一个不存在的依赖项,比如使用堆而不是堆栈。

    除了IDE重新格式化之外,我不会更改老板没有要求我更改的代码。如果有什么事 惊人的

    如果老板让我修复代码中的一个bug,我会尽可能少地修改。假设这个bug在一个简单的for循环中。我会把循环重构成一个新方法。然后我将为该方法编写一个测试用例,以证明我已经找到了bug。然后我会修正新方法。然后我会确保测试用例通过。

    是的,我是承包商。承包给你一个不同的观点。我推荐它。

        9
  •  2
  •   Thorbjørn Ravn Andersen    15 年前

    并且你的更改自动意味着必须重新测试,因为你可能无意中破坏了其他地方的一些行为。

    而且,每个人都会犯错。您所做的每一个非常重要的更改(将StringTokenizer更改为split)都是 Eclipse中的一个自动特性(例如,由您自己编写)是一个出现错误的机会。你是正确地理解了一个有条件的人的行为,还是仅仅因为错误而忘记了一个有条件的人 ! ?

        10
  •  1
  •   Lunivore    15 年前

    我通常不会费心去查看旧代码来寻找问题。然而,如果我在读它,就像你看起来在做的那样,它让我的大脑出现故障,我会修复它。

        11
  •  1
  •   BigMac66    15 年前

    从经验来看,这取决于两件事:时间和风险。

    如果你有足够的时间,那么你可以做更多的事情,如果没有,那么你所做的任何改变的范围都会相应地缩小。虽然我很讨厌这样做,但我不得不制造一些可怕的可耻的黑客,因为我根本没有足够的时间去做正确的事情。。。

    如果您正在处理的代码有很多依赖项,或者对应用程序非常重要,那么就尽可能少地进行更改—您永远不知道您的代码是什么 修理

    听起来你很清楚 看起来我不想说具体的改变是什么顺序,因为这会因人而异。只需先做一些小的本地化更改,测试,扩展更改的范围,测试。展开。测试。展开。测试。直到你没有时间或没有更多的改进空间!

    顺便说一句,在测试时,您可能会看到最常发生故障的地方—为它们创建测试用例(JUnit或其他什么)。

    我经常做的两件事是重新格式化(Eclipse中的CTRL+SHFT+F)和注释不明显的代码。在那之后我就先把最明显的钉子钉上。。。