C#: 嵌套类的命名规范和适当实现?

4
我想知道是否有一种命名“具体”类和实例的标准。
例如,我目前有一个名为Test的类,它的实例也被称为Test。我认为这很糟糕。
是否有某种标准来命名具体类及其实例?实例需要是Test,但具体类我不知道该怎么办;将其命名为TestConcrete吗?
在这种情况下,Microsoft会怎么做?
基本上,具体类仅用于Product类中支持嵌套类,它永远不会从外部实例化。
这是我的类。我认为我做得对吗?我正在Product的构造函数内创建Test的实例。
我不想养成坏习惯,我将会做很多这样的事情,而Test(具体)和Test(实例)可能是个坏主意!
public class Product    {
    public int Id { get; set; }

    private Test Test { get; set; }


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

我使用小写字母为实例命名。例如:private Test test; - x2.
6
.NET指南要求属性使用PascalCasing命名法。 - Mark Sowul
1
通常情况下,使用相同的名称并不重要。然而,在某些情况下,如果存在一些歧义,可能会导致冲突。因此,在这些情况下,您需要重新命名类型或属性,或者使用其命名空间限定类型。这与C++所做的非常不同。C#更具上下文性,并且通常能够根据上下文知道您想要使用类型还是属性。 - Phil1970
2个回答

5

这并非没有先例,我认为你可以找到相关资料。

  Color  Color { get; set; } 

在图书馆里,还有一些类似的东西。但是更好的方法是考虑一个更具体的名称,即面向域的名称。例如:
```html

在图书馆中,还有一些类似的内容。但是解决这个问题的最佳方法是考虑一个更具体、面向域的名称,例如:

```
  private Test TestResults { get; set; }

或者

  private TestData  Test { get; set; }

1
我喜欢这个,我也一直在调查微软是如何做到的,我想我找到了更好的方法...测试实际上是产品的测试,因此具体类被称为ProductTest,属性为Test,因此我有一个私有的ProductTest Test { get; set; }。 - Martin

1

以下是我的指南:

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 _
}

这些只是我的个人观点。:)


1
你的公共字段命名规范不符合微软推荐的命名准则,无论是你有公共字段这一事实,还是你使用驼峰式命名它们。 - Cody Gray
1
好的,正如我帖子结尾所述:“这只是我的个人观点。 :)”我并不是说我使用公共字段,但如果出于某种原因确实需要使用,那么我会这样命名它们 :) - Yngve B-Nilsen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接