如何处理在多个应用程序中使用的公共代码

时间:2012-04-23 06:51:49

标签: svn code-reuse modularity

在我们的应用程序中,我们有一些代码正在多个应用程序中使用。使用SVN外部代码共享代码(请参阅问题Multiple apps with common code -- how to approach this?)。 为了简化部署,我们创建了独立的可执行文件(没有DLL)。

问题在于,我们不仅要获得具有简单功能的公共代码,还要获得具有依赖于其他公共代码的功能的代码片段。 E.g:

  • 模块A包含通用功能A
  • 模块B包含常用功能B
  • 模块X包含常用功能X,但需要A和B.

在许多情况下,它不仅仅是关于需要另一个模块的某个模块,而且“如果你有模块A和模块B,那么你需要模块X将它们的功能链接在一起”。

由于我们在公共代码的每个模块中使用SVN外部,因此我们最终会得到一大堆外部。对于很多模块组合,我们有其他模块:

  • 如果您有模块A和B,则还需要模块X
  • 如果你有模块B和C,你还需要模块Y
  • 如果您有模块A和C,则还需要模块Z
  • ...

虽然SVN外部非常清楚,但使用它仍然非常麻烦:

  • 如果我们添加依赖于2个(或更多)其他模块的功能,我们经常需要创建新模块
  • 如果添加新模块,我们经常需要更改所有应用程序的外部
  • SVN更新需要更长时间

是否有任何好的模式或技术可以用来使这更容易(或更快,......)? E.g:

  • 使用#define和#ifdef只包含依赖于模块A的代码,如果模块A真的存在(我们过去15年前这样做了,但我不喜欢这种方法)
  • 递归外部(这是否存在?)
  • DLL的东西? (虽然这可能只会使问题变得更糟)
  • ...

还有其他建议吗?

0 个答案:

没有答案