会有一个应用程序可以做 3 件主要的事情。A
,B
和C
. 这将是一个 C# winforms 应用程序。
我们的 CEO 希望将此应用程序分为 6 种不同的产品。
- 只是一个(简单)
- A + B(高级)
- A + B + C(终极)
所有这一切都适用于一个用户或多个用户(许可)。因此,我们现在有 6 个项目!
如果我们假设三大部分确实是分开的,可以单独工作,我们怎么能维持一个项目而卖6个呢?
目前,我想到了三种方法来实现这一点:
A:有一个基本的骨干,并将 A、B、C 中的每一个构建为一个模块。这样我们只需要处理 -one/many users- 问题。
B:创建一个可靠的产品并使用预处理器指令在编译时设置功能。这真的很困难,并且使代码变得丑陋。此外,可能会破坏项目。
C:创建一个版本控制机制,该机制将设置为允许应用程序的某些功能。这是最简单的方法,但有两个缺点。它很容易破解,我们为简单用户提供终极版,这很糟糕。
与此类似的是 Windows 版本问题(Home、Basic、Pro、Ultimate)
我们应该如何设计这个项目?