【问题标题】:C#: Naming convention for Nested classes, and proper implementation?C#:嵌套类的命名约定和正确的实现?
【发布时间】:2011-07-22 19:51:48
【问题描述】:

我想知道是否有命名“具体”类和实例的标准。

例如,我目前有一个名为 Test 的类,它的实例也称为 Test。我认为这很糟糕。

是否有某种标准来命名具体类及其实例?实例需要是测试,但具体的我不知道该怎么做;将其命名为 TestConcrete?

Microsoft 在这种情况下会做什么?

基本上,具体类仅用于 Product 类以支持嵌套类,它永远不会从外部实例化。

这是我的课。我想我这样做对吗?我在 Product 的构造函数中创建了 Test 的实例。

我不想养成坏习惯,我会做很多这样的事情,而测试(具体)和测试(实例)可能是个坏主意!

public class Product    {
    public int Id { get; set; }

    private Test Test { get; set; }


    public Product()
    {
        Test = new Test();
    }
}

【问题讨论】:

  • 我用小写字母命名实例。例如:私有测试测试;
  • .NET 准则适用于要使用 PascalCased 的属性
  • 通常,使用相同的名称并不重要。但是,在某些情况下,如果存在歧义,可能会导致冲突。因此,在这些情况下,您要么需要重命名类型或属性,要么使用其命名空间限定类型。这与 C++ 所做的非常不同。 C# 更具上下文性,通常能够根据上下文知道您是要使用类型还是属性。

标签: c# oop inner-classes


【解决方案1】:

不是没有先例,我想你可以找到

  Color  Color { get; set; } 

在图书馆里,还有一些类似的。

但最好的解决方法是想一个更具体的名称,即域驱动。类似的东西

  private Test TestResults { get; set; }

  private TestData  Test { get; set; }

【讨论】:

  • 我喜欢这个,我也一直在研究微软是如何做到的,并提出了 - 我认为它更好......测试实际上是一个产品测试,所以具体类称为 ProductTest 和属性是 Test 所以我有私有 ProductTest Test { get;放; }.
【解决方案2】:

这些是我的指导方针:

public abstract class Test
{
    public void FooBar() // Method, capitalization, PascalCase
    {
         Person fatherFigure = new Person(); // Class instance, lowercase first letter, camelcase rest.

    }

    public string Name {get; set; } // Property, capitalization, PascalCase

    private string PrivateName {set; set; } // Private property, capitalization, camelcase

    public string someField; // Field, lowercase first letter, camelcase

    private string _someField; // Private member, prefix with _
}

这些只是我个人的意见。 :)

【讨论】:

  • 您对公共字段的约定不符合 Microsoft 推荐的命名准则。您拥有公共字段的事实,也不是您对它们进行驼峰命名的事实。
  • 好吧,正如我帖子的结尾所说:“这些只是我自己的意见。:)”我并不是说我使用公共字段,但如果出于某种原因发生这种情况,那就是我会命名它们:)
猜你喜欢
  • 1970-01-01
  • 2019-11-24
  • 2010-09-28
  • 2013-03-13
  • 2019-08-12
  • 1970-01-01
  • 2019-12-13
  • 2013-12-01
  • 2018-02-06
相关资源
最近更新 更多