【问题标题】:Merging Core Libraries合并核心库
【发布时间】:2009-05-20 14:35:58
【问题描述】:

大约一年前,我们公司推出了一个较大的软件包,主要由两名高级开发人员编写。为了便于演示,我将其称为“项目 A”。从那时起,我们一直在开发一个新的软件包,“项目 B”,在它的树中是项目 A 的一个分支。

项目 B 有对项目 A 的引用,但是现在我们即将结束项目 B,我们还需要从 A 引用 B。因此,在合并 A 的分支之后,在与 B 上线之前,我们想要合并两个项目之间的核心库。

您在遇到这种情况时有哪些经验?这个项目有哪些最佳实践和经验教训?我们如何才能最好地合并核心库,同时对项目 A 中的其余源代码影响最小?

编辑: 您如何看待保留项目 A 的命名空间,但将代码定位在项目 B 的核心库(最终将成为公司的核心库)中的可行性?从那里,只需在旧项目中引用新的公司核心库...

编辑 2: 感谢您的回复。也许需要更多的技术说明。这两个项目密切相关,但每个项目都有自己的 .NET 类库项目作为核心库。除此之外,每个库都被其他各种 .NET 项目引用;内部和外部 Web 应用程序、表单应用程序等。我的更多问题是源代码应该放在哪里 - 我不认为它们应该保持两个独立的 .NET 项目,但一个项目包含两者,最初保留现有的命名空间.随着我们继续开发,我们将重构、组合命名空间、清除重复功能等。毫无疑问,两个现有库中包含的功能将在即将到来的项目中有用,并且在现有的两个库之间共享也出现了新的需求“核心”库。

【问题讨论】:

    标签: architecture codebase


    【解决方案1】:

    您是否对 B 和 A 之间的循环引用的可能性有疑问?

    或者更多关于 A 和 B.A 之间冲突命名空间的信息?

    如果 A 和 B.A 在同一个项目的完全相同的命名空间 (A) 中,我认为您可能会遇到严重的冲突。

    一种可能性是为这两个库添加一个命名空间前缀,然后根据您的需要导入那个?

    即

    A 变成 V1.A,B.A 变成 V2.A(在项目 B 下)

    那么,如果你想要 V1,你只需导入 V1 命名空间,如果你想要 V2,你导入 V2 命名空间,我认为引用应该对齐?

    您仍然会遇到一些问题,因为如果您弄乱了 A 的命名空间,您将破坏任何已经将其引用为 A 而不是 V1.A 的旧代码。

    老实说,我认为在一个项目中,您的程序集和命名空间只需要是唯一的。因此,如果您有两个版本的程序集具有相同的命名空间......其中一个必须去。

    【讨论】:

    • 是的,循环引用是最初的关注点。尽管这些项目是分开处理的,但它们是非常相关的,并且必须紧密集成。我相信命名空间实际上会有最小的重叠,而更多的前缀肯定是答案。
    【解决方案2】:

    我认为这高度依赖于语言、环境和库类型(动态/静态链接)。你期待什么问题?

    • 冲突标识符
    • 重复功能
    • 对构建过程的更改
    • 集成/单元测试

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多