ASP.NET MVC视图模型命名约定

Sam*_*Sam 18 asp.net-mvc model

我知道我可能对此有不同意见,但我想知道模型命名约定是否存在和"最佳实践".

我有一个相当大的应用程序,我采用了以下模型命名约定:

  • 楷模
      • CategoryAddModel
      • ProductAddModel
    • 编辑
      • CategoryEditModel
      • ProductEditModel
    • 视图
      • CategoryViewModel
      • ProductViewModel

我也想到了以下内容:

  • 楷模
      • AddCategoryModel
      • AddProductModel
    • 编辑
      • EditCategoryModel
      • EditProductModel
    • 视图
      • ViewCategoryModel
      • ViewProductModel

你更喜欢哪个?为什么?

你认为这真的很重要吗?

Cha*_*ngh 14

我更喜欢{ViewName}{Controller}ViewModel.我也删除Models文件夹,而不是将视图模型放在ViewModels文件夹中.这对我来说更有意义.

例如. AddCategoryViewModel

  • -1,我会以`{Controller} {ViewName} ViewModel`的方式做到这一点,因为当你使用Intellisense时,当你可能已经知道你正在寻找'类别'时,键入`Add`会产生太多结果.所以`Category`会给`CategoryAdd`,`CategoryView`和`CategoryEdit`这是一个不太广泛的列表.单独的`Models`和`ViewModels`目录的+1 (8认同)

mar*_*ind 5

没关系.您应该以一致,合理和直接的方式命名.基本上,只需挑选一些有意义的东西,让你最有成效.考虑一下您的命名约定如何与IntelliSense一起使用.

您可能还想考虑从现在起一年内维护代码的难易程度.

  • 你的答案还可以,但如果有一些"官方"的约定应该会更好,这样世界各地的开发人员都可以使用它.好处是显而易见的.当有人加入项目时,他不必学习新的约定.只是我的两分钱. (10认同)

rob*_*pim 5

为了明确起见,将Hightmaston的评论引出为正式答案。

遵循的逻辑模板是:

{Controller}{ViewName}ViewModel

这样可以鼓励更好地大规模组织文件,并减少Intellisense“命中”的次数。

一个简单的示例如下:

CategoryIndexViewModel

为了简洁起见,您还可以考虑:

CategoryIndexModel

  • 对于大型项目,遵循这样的命名模式也确实有助于消除有关如何命名新事物或如何调试/查找事物的猜测工作。 (2认同)