两个大致相同的代码库,我如何合适地合并它们?

时间:2010-07-06 07:59:43

标签: java

首先,本主题与版本控制系统无关。我们使用版本控制:)但它现在是偏离主题。

我们有一种用Java编写的中型项目。后来,我们需要一些非常相同但在JavaFX平台上的东西。因此,我们不是从头开始编写代码,而是使用以前的代码库并更改了必要的部分,以使其在JavaFX上运行。这不是一个简单的任务,如果不是唯一的方法,我不建议它......但无论如何都要完成。

我的问题是,现在我们有两个单独的代码库,%80 - %90相同,并且都在积极开发中。因此,当我们向一个添加新功能/错误修复时,另一个需要修复。

如何重构那些可以从一个地方管理相同部分的项目。而且我还需要松散地结合相同的 - 不同的部分。

感谢。

1 个答案:

答案 0 :(得分:1)

我首先将代码分成三个独立的模块(例如每个项目一个模块):

  • JavaFX用户界面
  • Java用户界面
  • 应用程序库

两个用户界面应该已经是单独的开发流。

应用程序库将独立于相同的代码库开发。我将从两个中较高级的版本开始,然后通过版本控制日志和另一个版本的差异,并合并更改。可能有一些工具可以帮助您解决这个问题,但合并主要是手动过程。

如果您有两个不兼容的要求,则需要通过引入适配器或同一接口的多态实现来“封装不同的概念”。有各种技术可以帮助您解耦组件;例如依赖倒置原则,中介模式。

如果您对应用程序库进行了单元测试,那么合并过程将会更容易。

虽然听起来很多工作,但维护不同的代码库是一场噩梦。一旦模式建立起来,就越来越难以做任何事情,先例就是下一个副本。每次我在实践中看到这种模式时,产品都会以缓慢而昂贵的方式失败。