Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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#_Oop_Inner Classes - Fatal编程技术网

C#:嵌套类的命名约定和正确的实现?

C#:嵌套类的命名约定和正确的实现?,c#,oop,inner-classes,C#,Oop,Inner Classes,我想知道是否有一个命名“具体”类和实例的标准 例如,我目前有一个名为Test的类,它的实例也叫Test。我认为这很糟糕 是否有某种标准来命名具体类及其实例?实例需要测试,但具体我不知道该怎么做;命名为TestConcrete 在这种情况下,微软会怎么做 基本上,具体类仅用于产品类中以支持嵌套类,它永远不会从外部实例化 这是我的班级。我想我这样做是对的?我正在产品的构造函数中创建Test实例 我不想养成坏习惯,我会做很多这样的事情,而测试(具体)和测试(实例)可能是个坏主意 public clas

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

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

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

在这种情况下,微软会怎么做

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

这是我的班级。我想我这样做是对的?我正在产品的构造函数中创建Test实例

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

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

    private Test Test { get; set; }


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

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

  Color  Color { get; set; } 
在图书馆,还有更多类似的地方

但最好的解决方法是想出一个更具体的名称,即域驱动。差不多

  private Test TestResults { get; set; }


以下是我的指导方针:

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

这些只是我自己的意见。:)

我用小写字母命名实例。例如:私有测试;。NET的指导原则是对属性进行更新。通常,使用相同的名称并不重要。但是,在某些情况下,如果存在一些歧义,可能会导致冲突。因此,在这些情况下,您需要重命名类型或属性,或者使用名称空间限定类型。这与C++所做的非常不同。C#更符合上下文,通常可以根据上下文知道是否要使用类型或属性。公共字段的约定不符合Microsoft推荐的命名准则。既不是因为你有公共字段,也不是因为你对它们进行了分类。好吧,正如我文章的结尾所说:“这只是我自己的观点。”“我不是说我使用公共字段,但如果出于某种原因,我会这样命名:)我喜欢这个,我也一直在调查微软是如何做到这一点的,并提出了一些建议——我认为更好。。。Test实际上是对产品的测试,因此具体的类称为ProductTest,属性为Test,因此我有私有的ProductTest Test{get;set;}。
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 _
}