为什么要使用MVVM?

90

好的,我一直在研究MVVM模式,但以前每次尝试时都因以下几个原因而放弃:

  1. 不必要的冗长编码
  2. 对于程序员没有明显的优势(我的办公室里没有设计师。目前只有我自己和另一个程序员)
  3. 没有很多好的实践资源/文档!(或者至少很难找到)
  4. 想不出一个单独使用它的优势。

我即将再次放弃,想问一下是否有人能回答上面的原因。

我真的看不出在单个/合伙编码中使用这个的优势。即使在具有10个窗口的复杂项目中也是如此。对我来说,DataSet是足够好的视图,绑定就像Brent问题中所述的那样。

能否举一个使用MVVM模式节省时间的例子比较XAML数据绑定。

目前我的100%绑定都是在XAML中完成的。因此,我觉得没有必要使用VM,因为它只是我需要编写并依赖的额外代码。

编辑:
在花了一个下午研究MVVM后,我终于从这个答案中找到了一些让我认识到它真正好处的东西。


18
如果你已经对它进行了多次评估,但没有发现使用它的优势,那么就不要使用它。 - Daniel Daranas
3
为什么要使用多个问号?这似乎是一些相关问题的重复,比如:https://dev59.com/BXI-5IYBdhLWcg3wm5pH和https://dev59.com/XnI-5IYBdhLWcg3w18Z3。 - Benjamin Podszun
1
@Daniel 我知道,但我想要一些例子来帮助改变我的想法,并真正实现它! - Michal Ciechan
请查看托管可扩展性框架(MEF)。正如Ross在这里所解释的那样,它更适合小团队使用。 - Rob Tillie
3
大多数情况下,WPF 假定采用 MVVM 模式。例如,如果不使用 MVVM 就使用 WPF 树控件,可能会在一天内让你抓狂。MVVM 只是简化和可测试化的东西。 - Gishu
2
这个链接可能会回答一些问题:http://www.wintellect.com/CS/blogs/jlikness/archive/2010/04/14/model-view-viewmodel-mvvm-explained.aspx。我将其作为评论发布,因为它只是一个链接,而不是真正的答案。 - Peter
13个回答

2

我认为使用MVVM模式会增加我们编写的代码量,但是看看它的好处吧,所有东西都被隔离开来,如果你是一个设计师,那么你可以设计你的程序,其他人可以为你编写代码,其他人可以为你处理数据库层。尤其是在大型企业应用程序中,如果不使用MVVM,则维护几乎是困难的... 我自己在开发ERP解决方案时使用了它,现在因为这种隔离级别,维护变得非常简单。


1

MVVM真的是过度编码。

那么MVVM提供了什么好处呢?

它只是关注点分离而已。您也可以将ViewModel逻辑编写到Controller中。ViewModel只负责进行转换(例如将对象转换为字符串)。通过使用MVVM,您使用更多面向对象的编程风格。通过将转换逻辑编写到Controller中,您使用更多的函数式编程风格。

因此,这归结为使用更多代码以获得更好的可读性或使用大型Controller文件的较少代码。总之,您不能说必须使用MVVM,因为它比MVC更好之类的,这只是个人偏好。

只是为了明确我为什么提到Controller:MVVM也在某个地方具有Controller代码。我不知道为什么有广泛的共识要离开C。


0

MVVM的好处

  1. 降低复杂性。
  2. 设计和开发隔离。
  3. 依赖注入。
  4. 主要优势在于,当您拥有一个良好结构化的MVVM Windows Phone应用程序并希望开发相同的Windows Metro桌面应用程序时,您只需要集中精力于设计,因为相同的视图模型可以直接使用。

希望这有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接