Eri*_*sch 6 asp.net-mvc dry viewmodel
我喜欢为DRY而努力,显然它并不总是可行的.但是,我不得不在MVC中看起来很常见的概念,即"视图模型".
视图模型旨在仅将最少量的信息传递给视图,以实现安全性,可维护性和测试问题.我明白了.这说得通.
但是,从DRY的角度来看,View Model只是复制您已有的数据.视图模型可能是临时的,仅用作DTO,但您基本上维护了同一模型的两个不同版本,这些版本似乎违反了DRY主体.
视图模型是否违反DRY?他们是必要的邪恶吗?他们做得比坏还好吗?
这一点已经被一再提起。它不仅是一个相当大的骗局,而且答案是主观的和有争议的。ViewModel 是对 DDD 和持久性无知概念的回应。
说不使用 ViewModel 不好意味着忽略了 Django 和 Rails 以及大多数 PHP ORM/MVC 框架根本不关心这些概念。您是否希望有人告诉您所有其他语言和框架“都做错了”?
您是否想要使用 ViewModel 100% 取决于您想要的架构风格以及应用程序的目标是什么。
这就像问在 WebForm 应用程序中拖放 GridView 是否合适?取决于很多事情。
您对 DRY 也存在误解。WCF 服务中的代理类是否违反 DRY?ViewModel 包含逻辑吗?DRY 的主要目标是不存在具有有意义目的的重复逻辑。几个共享对象形状的 DTO 是否违反了这一点?
有界上下文的 DDD 原则也值得一读。如果 ShoppingCart 对象需要在仓库和电子商务网站设置中以不同的方式运行,这是否意味着您要共享类型?当唯一的共享功能是合计价格(价格 + 税费 + 运费)时会发生什么?您是否为此创建了一个基类,从而增加了耦合?对于像 GetTotal() 这样的简单方法,要实现 100% DRY,需要在时间/成本/维护方面进行哪些权衡。在有意义的情况下违反 DRY 是否实际上会降低维护代码库的复杂性和总体成本?
我很抱歉回答了这么多问题,但希望现在您能看到您所问问题的细微差别和复杂性。;)
归档时间: |
|
查看次数: |
745 次 |
最近记录: |