2011-03-25 73 views
1

我想知道是否有人能告诉我,如果有一个标准的命名“具体”类和实例..C#:嵌套类的命名约定和正确的实现?

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

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

微软在这种情况下做了什么?

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

这是我的课..我假设我这样做是正确的吗?,我在产品的构造函数中创建测试的实例。

任何帮助真的很感激,我不想进入坏习惯,我会做很多这些....和测试(具体)和测试(实例)可能是一个坏主意!

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

    private Test Test { get; set; } 


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

我用小写字母命名实例。例如:私人测试测试; – 2011-03-25 10:47:30

+5

.NET指南针对的属性是PascalCase – 2011-03-25 10:52:57

+0

通常,使用相同名称并不重要。但是,在某些情况下,如果存在某些不明确性,可能会导致冲突。因此,在这些情况下,您需要重命名类型或属性或使用其名称空间来限定类型。这与C++所做的完全不同。 C#更具上下文性,通常可以根据上下文知道您是否想使用类型或属性。 – Phil1970 2017-02-01 20:15:38

回答

4

这不是没有先例,我认为你可以找到

Color Color { get; set; } 

,有的更像。

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

private Test TestResults { get; set; } 

private TestData Test { get; set; } 
+1

我喜欢这个,我也一直在调查微软是怎么做的,并且已经提出 - 我认为它更好...测试实际上是产品的测试,因此具体类称为ProductTest,属性是测试,所以我有私人ProductTest测试{get;组; }。 – Martin 2011-03-25 11:28:40

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

您的公共字段约定不符合Microsoft推荐的命名准则。无论你有*公共领域的事实,还是你将骆驼打他们的事实。 – 2011-03-25 11:02:04

+1

嗯,正如我的帖子的结尾所述:“这些只是我自己的意见:) :) 我不是说我使用公共领域,但如果它出于某种原因,这是我将如何命名他们: ) – 2011-03-25 11:20:11