【发布时间】:2017-05-26 14:22:28
【问题描述】:
我在新公司遇到了遗留代码库的问题。
基本上,他们有 2 个大代码库/项目或程序集,我会说程序集 A 和程序集 B。此外,我们有程序集测试 A 和程序集测试 B。
我在这里遇到的问题是程序集测试 A 正在使用程序集测试 B 中的一些类。程序集测试 B 正在使用程序集测试 A 中的一些类。但没有完成,程序集测试 A 正在使用程序集 B 中的一些类。真的很恶心,我知道。这就是现在技术上的原因,我们有 2 个独立的项目,但实际上我们将它们放在一个包中。那么你可以想象,每次我们部署 A 时,我们都必须部署 B。
我的任务是将这些程序集解耦或将它们拆分为 2 个单独的程序集/项目,以便将来部署和测试等等。
我制定了一个缓慢的策略,但它可以确保我们仍然保证功能。我最初的策略是,我将在测试程序集 A 中慢慢删除程序集 B 的依赖项,并通过测试程序集 A 使测试通过。这意味着我正在从程序集 A 中删除程序集 B 的依赖项。下一步对程序集执行相同的方式B,最后我们将完成 2 个单独的组件。
对我来说,我相信这不是一件容易的事,但我不介意去做。但是,我需要您对我的初始策略提出意见或建议。我不想冒险在那种项目的中间回到起点。
那么你们能否就这项任务给我任何诚实的意见或建议?
我非常感谢。
谢谢
【问题讨论】:
-
听起来很乱。我更喜欢看一个依赖关系图,但这不是重点。你听说过技术债吗?该代码作为很多技术债务。您是否听说过有人从信用卡中取钱来支付另一张信用卡?这是我唯一的想法。您可以通过复制代码来分离项目,然后您必须通过重构已经分离的项目中的任何不必要的代码或任何内部代码重复来付费。
-
听起来您需要第三个项目“TestCommon”。
-
@Theraot 当您提到技术债务时,您是绝对正确的。我也很喜欢通过信用卡付款的例子(Y):D。老实说,我知道我将在两个程序集中都有重复的代码,但它们位于两个不同的域中,所以我希望它应该没问题。这真是乱七八糟的代码库。然而,它就是这样,我们应该让它变得更好。我将尝试找到依赖关系图并让您知道,但我认为您可以想象现在的问题是什么。你还有其他建议吗?干杯。
-
@Bradley:这就是我现在的想法,但可能是下一步。我认为最简单和最重要的步骤(纠正我错了)是先拆分它们,当我熟悉代码库时,我可以找到一些常见的东西并将它们放入 Test Common。你怎么看?干杯
-
是的,很明显您需要建议和指导,但这里的情况:您就 SO 提出了非常广泛的基于意见的问题。 softwareengineering.stackexchange.com 上的主题可能更多(或者可能已经在那里讨论过很多次 - 确保搜索并检查他们的帮助 -> 在将问题移到那里之前先游览)
标签: c# .net unit-testing