代码之家  ›  专栏  ›  技术社区  ›  Aaron

合并核心库

  •  2
  • Aaron  · 技术社区  · 15 年前

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

    项目B引用了项目A,但是现在我们接近项目B的末尾,我们还需要从A引用B。因此,在合并了A的分支之后,在与B一起使用之前,我们希望合并两个项目之间的核心库。

    你在这种情况下有什么经验?在这个项目中有哪些最佳实践和经验教训?如何在对项目A中其余源代码影响最小的情况下,最好地合并核心库?

    编辑: 您对保留项目A的名称空间,但将代码定位在项目B的核心库(最终将成为公司的核心库)中的可行性有何看法?从那里,只需参考遗留项目中的新公司核心库…

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

    2 回复  |  直到 15 年前
        1
  •  1
  •   Mxyzptlk    15 年前

    你对B和A之间循环引用的可能性有问题吗?

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

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

    一种可能是向两个库中添加一个名称空间前缀,并根据需要导入该前缀?

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

    所以,如果你想要v1,你只需要导入v1名称空间,如果你想要v2,你需要导入v2名称空间,我想引用应该排成一行?

    您仍然会遇到一些问题,因为如果您弄乱了的名称空间,那么您将破坏已经将其引用为而不是v1.a的任何遗留代码。

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

        2
  •  1
  •   peterchen    15 年前

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

    • 碰撞标识符
    • 重复功能
    • 对生成过程的更改
    • 集成/单元测试