松散耦合,高内聚,可维护的应用程序
这是我一遍又一遍听到的战斗口号。关于如何松散耦合组件有很多建议。
- 基于接口并注入所有依赖项
- 使用事件
- 使用服务总线
- 等等
然而,我觉得我从来没有真正听到过任何关于增加凝聚力的具体建议。有人可以提供吗?
你可以在那里开始回答,但我有一个具体的情况,我也想得到建议。
我有一个相当松散耦合的 C# Windows Forms MVP 应用程序,它的许多组件都基于接口,通过构造函数注入它们并使用控制反转容器 (Castle Windsor) 将它们组装在一起。
我会说它的架构非常好——它已经经历了几个大的变更请求并且很容易处理它们。总的来说,我对它非常满意,但我不能放弃一个挥之不去的怀疑,即它不是特别有凝聚力。作为唯一的开发人员,这对我来说不是问题,但我担心对于第一次进入应用程序的人来说,这会让人感到非常困惑。
让我举个例子 - A 公司使用该应用程序来填充和处理装满产品的外运卡车。这意味着有一个OutgoingTransactionInfo对象、一个OutgoingTransactionInfoControl(用于实际输入所述信息)、OutgoingTransactionValidator和OutgoingTransactionPersister。随着应用程序投入生产,我们也收到了处理传入事务的请求——这些事务附加了不同的信息、不同的验证以及不同的持久化方式。然后公司 B 也想将应用程序用于他们的事务处理,这个想法是相似的,但同样,信息、验证、持久性以及其他一些组件可能不同。
因为我的应用程序有一个很好的测试套件并且是松散的,所以我能够很容易地适应这些请求。但是,我认识到很容易意外地将其配置为无效状态。例如,您可以连接它以使用OutgoingTransactionInfo对象,同时使用IncomingTransactionValidator进行验证。如果差异很小,则错误甚至可能在一段时间内未被发现。
你对我有什么建议吗?您使用了哪些技术来降低此类风险?