代码之家  ›  专栏  ›  技术社区  ›  Dan Is Fiddling By Firelight Leniency

管理按顺序开发的相关应用程序的代码库

  •  0
  • Dan Is Fiddling By Firelight Leniency  · 技术社区  · 15 年前

    因为到目前为止属于我们客户的所有版本(A1、B2、A3)都是单独资助和按顺序开发的,在每种情况下,我们只需对以前的客户源进行快照,然后将其放入新的SVN存储库中,并从那里开始进行更改。到目前为止,我们的管理还不错,但随着未来预期会有更多的客户,我们计划将客户A3的应用程序中的一些改进重新部署到A1的新版本中。我们当前的设置将无法在当前流程中保持可管理性。

    我们设想我们的客户根据一些高水平的能力差异分为两大类。我用A和B作为客户id的前缀反映了这一点;A1和A3版本的软件比B2版本有更多的共同点。目前,我们不希望有一个C类被添加,但不能排除几年后改变。

    我认为我需要将每个客户应用程序放在一个单独的解决方案中,而不是只有一个解决方案,而只是选择要运行哪个客户应用程序的原因有以下几点:

    第三个与第二个有关。出于安全原因,如果客户X不能拥有特性Y,那么X的应用程序就不能在公共库中拥有实现Y的方法,即使X的应用程序没有任何方法来调用该方法,因为如果他们足够聪明,他们可以做反求工程,在公共库之上编写自己的前端。

    编辑:这个问题似乎在这里基本上已经过时了,但我确实得到了相当多的讨论 another site.

    1 回复  |  直到 15 年前
        1
  •  1
  •   Adrian K    15 年前

    我没来过 相当地

    我认为你在正确的轨道上保持客户在不同的解决方案;在最初的开发阶段,重复代码可能是额外的工作——但是在管理依赖性时,你可能会陷入巨大的痛苦之中,这仍然是一件可怜的事——首先是管理依赖性的开销。

    我会保留 Stable Abstractions Principle Stable Dependencies Principle 请记住:将尽可能多的公共和低级别代码分发到库中,这些库不会有太多变化,并且更具争议性(和政治敏感性)的包可以引用这些库。

    纯净的 业务逻辑代码/模块。所以我认为合理的再利用是可以接受的。

    尽管您所做的不是一个多租户应用程序,但我认为您可能会发现一些常见的问题,并希望找到一些有用的解决方案或方法。

    我在这里提出的所有建议似乎都是在代码/体系结构/模式级别上的-我知道我在实际的代码管理/质量保证/发布方面没有做太多的志愿工作-抱歉。