2011-03-25 70 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