代码之家  ›  专栏  ›  技术社区  ›  HappyNomad

空代码的后面是什么?

  •  1
  • HappyNomad  · 技术社区  · 14 年前

    我理解优先使用视图模型而不是代码隐藏对单元测试的好处。然而,我无法理解为什么要实现完全空的代码。在编译时,代码隐藏和XAML是结合在一起的,所以它们实际上是同一件事。一、 我喜欢使用XAML,因为它的声明性很酷。但是,坚持所有与视图相关的代码都是XAML而不是C#实际上有什么实际原因吗?

    4 回复  |  直到 14 年前
        1
  •  4
  •   John Bowen    14 年前

    利用Blend在设计时使用XAML所能做的事情也有一些好处,但这实际上更多的是XAML与代码隐藏参数(相同代码)的比较。对于与MVVM相关的no-code-behind参数,正如您所指出的,真正的目标是将代码移动到类中,比如可以测试和重用的ViewModels。与许多事情一样,这常常被带到极端,当真正需要的是没有代码的时候,人们最终坚持永远不会有任何代码 业务逻辑 在代码背后,忽略了也常常有 UI逻辑 我也是。

    XAML非常丰富,允许您以声明的方式执行许多操作,但仍有一些特定于UI的操作(即事件处理程序、一些动画处理)需要使用一些代码才能完成。通常,您可以通过使用自定义控件、附加属性等方法将此代码移到代码隐藏之外的其他位置。但是,如果这样做没有获得任何重用好处,那么最好使用代码隐藏来代替UI逻辑。

    像MVVM这样的模式是通用的指导原则,而不是一组需要严格遵守的规则——这些被称为编程语言

        2
  •  1
  •   Angelo Badellino    14 年前

        3
  •  1
  •   Robaticus    14 年前

    这都是关于可测试性的。很难(几乎不可能)对落后的代码进行单元测试。使用MVVM,您可以创建完全测试模型和ViewModel的测试工具。

    也就是说,我是务实的粉丝。有些UI事件需要使用命令来设置,对于这些事件,我有时会下拉到codebhind中。

        4
  •  0
  •   Robert Rossney    14 年前

    视图模型

    另一方面,正如benjohnson所说,除了傻瓜,没有人能在视图模型中实现拖放。