Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 多层应用程序中类的推荐命名约定是什么?_C#_Asp.net_Naming Conventions - Fatal编程技术网

C# 多层应用程序中类的推荐命名约定是什么?

C# 多层应用程序中类的推荐命名约定是什么?,c#,asp.net,naming-conventions,C#,Asp.net,Naming Conventions,我的类/名称空间/控件有点命名问题 在我的商业图书馆里,我有一个名字空间叫做购物。它包含以下类: 购物车项目 购物车 购物车经理 在我的ASP.net应用程序中,我想创建一个以图形方式表示ShoppingCart实例项的控件。通常,我会将该控件称为ShoppingCart,但还有另一个类称为ShoppingCart?当然,编译等等都会奏效,但我认为它仍然很难看。我想我有一个问题,就是我给我的商业类命名时,没有说明它们应该代表什么。因为当涉及到表示层时,我会将应该表示业务类的控件命名为相同的名称

我的类/名称空间/控件有点命名问题

在我的商业图书馆里,我有一个名字空间叫做购物。它包含以下类: 购物车项目
购物车
购物车经理

在我的ASP.net应用程序中,我想创建一个以图形方式表示ShoppingCart实例项的控件。通常,我会将该控件称为ShoppingCart,但还有另一个类称为ShoppingCart?当然,编译等等都会奏效,但我认为它仍然很难看。我想我有一个问题,就是我给我的商业类命名时,没有说明它们应该代表什么。因为当涉及到表示层时,我会将应该表示业务类的控件命名为相同的名称

我想我可以添加一个后缀,比如“视图”,但我想做得对

多层应用程序的推荐命名方式是什么?
我应该如何命名表示表示表示层中ShoppingCart项目的控件

编辑:相关问题:

其他StackOverflow的人可能知道得更好,但据我所知,在分层体系结构方面没有公认的或行业标准的命名约定。尽管我认为您的思路是正确的:不仅是具体的命名,选择一种方法并始终如一地使用它将有助于提高代码的可维护性。

在开始项目之前,您应该决定要使用的命名约定。.NET Framework包含许多关于命名约定的建议,您可以在文档中的以下位置找到Visual Basic®命名约定建议:

ms-help://MS.VSCC/MS.MSDNVS/vbcn7/html/vaconVBNamingRules.htm

决定并遵守一组命名约定比将自己局限于特定的命名约定更重要。仔细考虑您使用的命名约定的影响也很重要。例如,我仍然喜欢使用控件类型作为控件名称的前缀,因为我可以在代码编辑器中键入“txt”,按Ctrl+Space,然后获取表单上所有textbox控件的列表


查看此了解更详细的讨论

在MVC范例中,拥有
Foo
FooView
FooController
是相当常见的

您可能会决定将它们放在不同的层次结构(Shopping.Model.Cart、Shopping.View.Cart)中更容易。它在概念上是干净的,但我认为它相当不可读。您可以在不同的名称空间中使用不同的名称(Shopping.View.CartView)

但是,一个好的IDE可以让您移动/重命名某些东西,因此不值得花太多时间担心为某些东西选择一个完美的名称。更重要的是要非常清楚你在建模什么以及它的局限性是什么。例如

  • Car
    是汽车的实例还是特定品牌/型号的汽车?摩托车是汽车吗?如果要将其重命名为
    车辆
    ,自行车是车辆吗
  • 项目
    是一种项目类型、项目实例还是
    数量
    项目实例
  • ShoppingCart
    只是一个项目/数量列表,还是它有其他功能?它是否通过求和数量来合并项目的重复项
  • 愿望清单是一种特殊的购物车(你还没有买),还是其他什么
  • 你能“保存”一辆购物车并获得报价单吗(这样你就可以打印出来,交给老板,签字,然后购买)?报价存储在哪里

您可以使用名称空间来分隔购物车UI和业务实体,例如:

  • YourApp.Web.UI.ShoppingCart
    (您的购物车Web控件)
  • YourApp.BusinessEntity.ShoppingCart
    (业务逻辑层中的购物车类)
当您创建/使用购物车对象时,乍一看该对象是UI控件还是实体类可能并不明显,但您的IDE(visual studio)将在编写代码时为您提供intellisense,在将鼠标悬停在名称上时提供工具提示,这可以缓解您的问题

或者,如果您真的想轻松阅读,可以在命名对象时使用前缀:

  • YourApp.Web.UI.ShoppingCart UI ShoppingCart
  • YourApp.BusinessEntity.ShoppingCart beShoppingCart

打开visual studio,按F1并将url复制到那里。如果您有完整的MSDN安装,您将看到该页面。如果没有,请访问MSDN.com并搜索Visual Basic命名约定建议。不要因为你不明白这一点就认为这个答案值得投反对票out@VinayB R,刚刚检查了我是否安装了完整的MSDN库,但仍然无法打开该位置。一开始很难给出答案吗?无论如何,在浏览了这些链接之后,我找不到任何多层命名相关信息。@Regent:我找到了Vinay B R打算直接显示给我的链接。点击他的黑体标记“签出此链接”,然后点击第一个链接。或者,如果您太懒,请复制此链接:@citronas,您提到的链接与提到的ms帮助位置无关。但这不是重点,重点是在我看来,这个答案既不能回答问题,也不能包含任何链接。如今,重构工具的强大功能大大减少了“在开始项目之前决定命名约定”的需要。通常,最好的命名约定只有在深入到项目中时才会出现。团队在开始项目之前的想法有时会随着时间的推移而急剧变化,尤其是在面对不断变化的需求时。我同意,一般的指导方针是好的,但没有必要在“开始”一个p之前把每只鸭子排成一行