我最简单的 ASP.NET MVC 2 控制器调用我的服务层并使用 AutoMapper 将视图模型映射到实体。一切看起来都很棒,没有重复的代码。
但是,当我遇到类似行为的场景时,我很难平衡单一责任原则 (SRP) 和不要重复自己 (DRY)。这方面的一个例子可能是需要添加/编辑车辆,其中一些属性/行为是共享的,而其他属性/行为是特定车辆独有的。
如果我争取真正瘦的控制器(从而尊重单一职责原则),我最终会在视图和控制器中重复代码,但会有细微的变化(标题、字段标签、字段可见性、下拉值、选择标准等)。
如果我争取不重复的代码,我最终会将太多的逻辑捆绑到一个控制器/视图中,并且它会变得臃肿。
有哪些方法可以解决控制器/视图中的重复代码?我不是在谈论可以分解到存储库中的数据库代码。我也不是在谈论可以分解到服务层的业务逻辑。我正在寻找可以帮助我在上述场景中产生最佳解决方案的工具和/或经验法则。