模型-视图-视图模型 (MVVM) 类和实例的名称应该有多详细?

发布于 2024-07-17 12:53:24 字数 915 浏览 4 评论 0原文

一般来说,我更喜欢详细介绍 .NET 类和实例名称,但有时 (引用迈克·伍德豪斯的话):

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

我第一个感觉自己真正陷入过度冗长状态的地方是在 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 UserControl(在 XAML 中)和
  2. 一个 POCO EnumerableRangeControlViewModel

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

IndependentVariableEnumerableRangeControlViewModel

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

In general, I prefer to be verbose with .NET class and instance names, but some times (to quote Mike Woodhouse):

Over-verbosity tends to conceal syntax, and syntax is important.

The first place I felt like I really strayed into the over-verbosity regime is upon implementing the Model-View-ViewModel (MVVM) pattern in Silverlight and WPF apps.

For example, I start with an EnumerableRange model object:

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

Then, I want to create a control that will allow me to surface this class for user input. Thus, I create a pair of view-related classes:

  1. an EnumerableRangeControlView UserControl (in XAML), and
  2. a POCO EnumerableRangeControlViewModel

Now, I use this pair in the parent View and ViewModel, respectively. With MVVM the view instance doesn't need a name, but my ViewModel instance is now named something like:

IndependentVariableEnumerableRangeControlViewModel.

Things are starting to get out of hand! What would you do?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

贵在坚持 2024-07-24 12:53:24

我建议如下:

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

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

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

IndependentVariableEnumerableRangeControlViewModel 

变得更具可读性

IndependentVariableEnumberableRangeVM

I propose the following:

  1. Drop the word "Control" from View/ViewModel classes and instance names altogether. "View" and "ViewModel" clearly state the class purposes.

  2. (Optional) Consistently adopt a convention to post-fix ViewModel instances with "VM".

In the example above, the instance name

IndependentVariableEnumerableRangeControlViewModel 

becomes a much more readable

IndependentVariableEnumberableRangeVM
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文