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

对于多层应用程序中的类,推荐的命名约定是什么?

  •  13
  • citronas  · 技术社区  · 14 年前

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

    在我的业务库中,我有一个名为shopping的名称空间。它包含以下类: 购物车项目
    购物卡
    购物车经理

    在我的ASP.NET应用程序中,我希望创建一个以图形方式表示ShoppingCart实例项的控件。通常,我会称之为控制购物车,但还有另一个类称为购物车?当然,编译和其他东西都可以,但我认为它仍然很难看。我认为我有一个问题,我把我的商业类命名为它们应该代表什么。因为当涉及到表示层时,我会命名那些应该表示相同业务类的控件。

    我想我可以添加一个像“view”这样的后缀,但我想做的对。

    对于多层应用程序,建议的命名约定是什么?
    我应该如何命名表示展示层中购物车项目的控件?

    编辑 :相关问题: How should I name database wrapper object?

    4 回复  |  直到 7 年前
        1
  •  10
  •   tc.    14 年前

    在MVC范式中,拥有 Foo , FooView FooController .

    您可能会认为将它们划分为不同的层次结构(shopping.model.cart、shopping.view.cart)更容易。它在概念上是干净的,但我认为它相当不可读。您可以在不同的命名空间中使用不同的名称(shopping.view.cartview)。

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

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

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

        3
  •  3
  •   Gan    14 年前

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

    • YourApp.Web.UI.ShoppingCart (您的购物车Web控件)
    • YourApp.BusinessEntity.ShoppingCart (您在业务逻辑层中的购物车类)

    当您创建/使用购物车对象时,一开始可能看不出该对象是UI控件还是实体类,但当您编写代码时,您的IDE(Visual Studio)将为您提供IntelliSense,当您将鼠标移到可以减轻问题的名称上时,还将提供一个工具提示。

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

    • YourApp.Web.UI.ShoppingCart uiShoppingCart;
    • YourApp.BusinessEntity.ShoppingCart beShoppingCart;
        4
  •  0
  •   Vinay B R    14 年前

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

    MS-HELP://ms.vscc/ms.msdnvs/vbcn7/html/vaconvbnamingrules.htm(MS-HELP://ms.vscc/ms.msdnvs/vbcn7/html/vaconvbnamingrules.htm)

    决定和遵守一组命名约定比将自己限制在一个特定的约定更重要。思考一下您使用的命名约定的影响也是很重要的。例如,我仍然喜欢在控件名称前面加上控件类型的前缀,因为我可以在代码编辑器中键入“txt”,按ctrl+space,然后获取表单上所有文本框控件的列表。

    看看这个 link 更详细的讨论。