我们的产品安装基数约为50,其中超过50%的安装在业务逻辑的代码中都有自定义,目前由巨大的IF和Switch语句完成。
我们目前正在将代码更新为.NET 3.5,并希望以更加可管理的方式处理自定义。我们目前唯一能想到的方法是要么坚持使用大型IF和Switch语句,要么在源代码控制中为每个客户端分配单独的文件,这似乎并不理想。
是否有可靠的方法在代码库中处理大量自定义?
答案 0 :(得分:4)
这不叫inheritance吗?通过添加自定义功能使类从基类扩展。每当我有大量的If或case时,我都会质疑是否应该重构为多个类。
答案 1 :(得分:2)
我很想安排事情,以便自定义是文本形式(可能是XML,但我想这不是唯一的选择),主应用程序是通用的,并通过解析这些配置文件获取客户特定的功能。
然后,您可以为每个客户建立一个存储库,其中包含配置文件(可能还有资源,如徽标和/或自定义脚本),以及主应用程序的存储库。
对于给定的客户版本,您的构建系统会自动收集应用程序和客户的存储库,并构建自定义版本。
我有这样一个系统的经验,你可以通过这种方式获得相当广泛的定制。它首先在应用程序方面使事情变得更复杂,因为您需要添加解析功能,但它使各种客户版本的管理变得更加简单,并且更不容易出错。
答案 2 :(得分:0)
DI框架与继承相结合可以使您的系统保持开放/封闭原则,使其更加模块化,并解决生命周期和分发问题,就像您需要分发扩展的基础库一样特定客户。
例如,您可以在BaseLibrary中使用Transfer类,然后您可以在CustomerX库中创建一个类LoggingTransfer extends Transfer,其中仅包含自定义基本功能的代码。