Architecture 合并核心库

Architecture 合并核心库,architecture,codebase,Architecture,Codebase,大约一年前,我们公司推出了一个相对较大的软件包,主要由两名高级开发人员编写。为了便于演示,我将其称为“项目A”。从那时起,我们一直在开发一个新的软件包“ProjectB”,在它的树中是ProjectA的一个分支 项目B引用了项目a,但现在我们接近项目B的结尾,我们还需要引用a中的B。因此,在合并a的分支之后,在与B一起使用之前,我们希望在两个项目之间合并核心库 您在这种情况下有哪些经验?这个项目有哪些最佳实践和经验教训?我们如何最好地合并核心库,而对项目A中的其他源代码影响最小 编辑: 您对保留

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

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

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

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

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

我认为这在很大程度上取决于语言、环境和库的类型(动态/静态链接)。你认为会有什么问题

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

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

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

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

一种可能是向这两个库添加名称空间前缀,并且根据您想要的名称空间前缀,可以导入该名称空间前缀吗

i、 e

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

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

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


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

是的,循环引用是最初的关注点。尽管这些项目是分开处理的,但它们是非常相关的,必须紧密结合在一起。我相信名称空间中实际上会有最小的重叠,更多的前缀肯定是答案。