【问题标题】:How verbose should names be for Model-View-ViewModel (MVVM) classes and instances?Model-View-ViewModel (MVVM) 类和实例的名称应该有多冗长?
【发布时间】:2010-10-20 10:32:48
【问题描述】:

一般来说,我更喜欢详细说明 .NET 类和实例名称,但有时 (to quote Mike Woodhouse):

冗长往往会掩盖语法,而语法很重要。

我第一次觉得我真正误入了过于冗长的机制是在 Silverlight 和 WPF 应用程序中实现模型-视图-视图模型 (MVVM) 模式。

例如,我从一个 EnumerableRange 模型对象开始:

public class EnumerableRange<T> : IEnumerable<T>
{ 
    public T Start{ get; set; }
    public T Stop{ get; set; }
    public long Count{ get; set; }
    ...
}

然后,我想创建一个控件,让我可以显示此类以供用户输入。因此,我创建了一对与视图相关的类:

  1. 一个 EnumerableRangeControlView 用户控件(在 XAML 中),以及
  2. 一个 POCO EnumerableRangeControlViewModel

现在,我分别在父 View 和 ViewModel 中使用这对。使用 MVVM,视图实例不需要名称,但我的 ViewModel 实例现在命名为:

IndependentVariableEnumerableRangeControlViewModel

事情开始失控了!你会怎么做?

【问题讨论】:

    标签: naming-conventions naming mvvm verbosity


    【解决方案1】:

    我提出以下建议:

    1. 从 View/ViewModel 类和实例名称中完全删除“Control”一词。 “View”和“ViewModel”清楚地说明了类目的。

    2. (可选)始终采用约定来使用“VM”对 ViewModel 实例进行后置修复。

    在上面的例子中,实例名称

    IndependentVariableEnumerableRangeControlViewModel 
    

    变得更具可读性

    IndependentVariableEnumberableRangeVM
    

    【讨论】:

    • 我们采用了类似的方法。此外,我使用了完全删除 ViewModel/VM 后缀的想法。您可以使用命名空间从 Model.Customer 中挑选出 ViewModel.Customer。这似乎是一个非常糟糕的主意,直到您记住您的 View 只能看到 ViewModel,所以它不会混淆,而 Model 什么都看不到。在您的 ViewModel 中,不要将 using Model 放在代码的顶部,您将始终将其称为 Model.Customer。
    猜你喜欢
    • 2010-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-29
    相关资源
    最近更新 更多