【问题标题】:Up-to-date books concerning "Working Effectively with Legacy Code" [closed]有关“有效使用旧代码”的最新书籍 [关闭]
【发布时间】:2015-05-11 15:05:41
【问题描述】:

作为一个团队,我们正在尝试对现有项目的代码进行现代化改造(中等规模,例如 300K LoC),同时尽量避免陷入完全重写的trap

现有代码是紧密耦合的,缺乏单元测试,但新的部分写得很好。

我正在寻找一些关于如何进行的文献(书籍、博客等)。我看到“有效地使用遗留代码”这本书是highly recommended 但是那本书现在已经有 11 年了。从那以后很多事情改变了。恐怕它可能会错过一些关键技术。尤其是在单元测试和打破紧密耦合方面发生了很多事情(例如,我确实相信依赖注入只是过去八年左右的事情)

是否有任何我可以阅读的最新书籍,其中包括打破依赖关系和为现有代码库编写单元测试?

编辑:快速说明,该项目是 99% 的 C#,在处理视频编码的部分混合了一些 C++/CLI。

【问题讨论】:

    标签: unit-testing refactoring


    【解决方案1】:

    这本书可能已经有几年的历史了,但只要您使用面向对象/过程语言,本书中的技术永恒。这完全是为了通过引入接缝来隔离难以测试的组件。

    看来您正在使用 .NET 代码库。在这种情况下,我还可以推荐一本更新的书:The Art of Unit Testing with examples in C#(第 2 版),作者 Roy Osherove,其中也涉及使用遗留代码。请注意,他从 Feather 的书中获得了很多灵感。本书还涉及一些高级模拟框架功能(伪造私有方法等),但对于这些技术 YMMV,因为它将您的测试与当前实现非常紧密地联系在一起。

    如果您想深入了解一些最新的东西,我建议您阅读一些遗留代码专家博客,例如 Adrian Bolboaca'sJ.B. Rainsberger'sgolden master 测试等技术在本书中也没有介绍,但在您改造遗留代码库时是有价值的技术。

    最后,如果您可以将您的团队召集到一起来获得legacy code retreat,这也可能是对这些技术的一个很好的介绍。

    【讨论】:

    • 我同意所涵盖的许多技术仍然相关,但是 11 年是很多时间,尤其是在软件开发方面。例如:我正在处理的应用程序只有 6 年的历史。而且 DI 绝对不是唯一对解耦或单元测试有用的“年轻”技术。另一个例子,Visual Studio 在 2005 年(本书写成一年后)增加了单元测试支持。 .Net 自 2007 年以来只有泛型。
    • 你说得对,大约 11 年在我们这个领域工作了很多时间 :) 我添加了一个额外的参考来引用我关于最近一本书的答案。
    【解决方案2】:

    如果还没有单元测试,我会在处理单元测试之前使用 Selenium 之类的东西来实现功能测试。

    我会担心每个模块被更改的单元测试。您没有指定,但我猜遗留软件是一个单体应用程序,当然不是,进行系统测试也是一个好策略。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-26
      • 1970-01-01
      • 1970-01-01
      • 2012-06-19
      • 1970-01-01
      • 1970-01-01
      • 2011-10-14
      • 1970-01-01
      相关资源
      最近更新 更多