架构师是否正确"MVVM只能将代码分解为多个(3)文件"

Sim*_*ons 4 .net c# wpf design-patterns mvvm

我是WPF的新手,我今天早上和我的C,C++背景的架构师进行了讨论.

我们正在尝试创建一个视频通话应用程序,它依赖于本机dll PInvoke.WPF应用程序主要是用户界面和代码,我们正在制作Pinvoke视频/音频呼叫并列出可用的驱动程序.

因此,如果我们从数据库谈论数据,那么我们的应用程序中没有太多的" 数据 ".

我们试图修改的WPF应用程序是Boghe,令人惊讶的是它们也没有使用MVVM.

虽然我热衷于实现MVVM,但架构师认为它不必要地将文件分成3部分.

他说,如果我们想要更改视图中的任何内容,例如更改按钮或任何控件,那么可以直接在后面的代码中完成.为什么然后使用MVVM?

虽然我有理论上的答案,但不能不同意他的观点.他真的对吗?

sta*_*ica 6

他说,如果我们想要更改视图中的任何内容,例如更改按钮或任何控件,那么可以直接在后面的代码中完成.为什么然后使用MVVM?

当然可以这样做.问题是它是否应该这样做.

对于相当小的代码库,您可能会在代码隐藏中混淆数据访问,核心逻辑和UI操作.然而,从长远来看,这将无法实现可维护或可测试的代码,随着时间的推移,混乱可能会变得更糟,变成意大利面条代码.请相信我的话,因为我工作时间的很大一部分用于扭转这些旧的混乱.

在代码隐藏中混合所有内容的一些后果是:

  • 从根本上违反"单一责任原则"(SRP)的准则.
  • 代码很难理解,因为它在同一个地方做了很多不同的事情.
  • 容易破解的代码.我在这里改变一些东西,出于一些神秘的原因,一些功能在那里打破.
  • 代码重复/违反"不要重复自己"(DRY)原则.您经常在几个地方找到相同的逻辑.这是偶然的,还是故意的?如果我在这里改变逻辑,那么同样/相似的逻辑也必须改变吗?

请注意,除了第一点之外,这些不是理论上的问题,而是典型的"遗留"代码库的非常实际的直接问题.

在我看来,说MVVM引入更多代码隐藏类并不完全正确.这显然是一个不赞赏将数据,业务逻辑和UI 逻辑层彼此隔离时出现的关注点基本分离的人的声明:即使使用MVVM,您的视图也只有一个代码隐藏类.其他两个类(是的,可能会有两个类)根本不能被视为"代码隐藏",因为它们不直接与视图/设计器绑定.