2011-03-25 3 views
1

"구체적인"클래스와 인스턴스의 이름을 지정하는 표준이 있는지 누군가가 알 수 있는지 궁금합니다.C# : 중첩 클래스에 대한 명명 규칙 및 적절한 구현?

예를 들어. 나는 현재 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(); 
    } 
} 
+0

작은 글자로 인스턴스 이름을 지정합니다. 예 : 개인 테스트 테스트; –

+5

.NET 가이드 라인은 PascalCase 될 속성입니다. –

+0

종종 동일한 이름이 사용되는 것은 중요하지 않습니다. 그러나 어떤 경우에는 모호한 점이있을 때 충돌을 일으킬 수 있습니다. 따라서 이러한 경우 유형이나 특성의 이름을 바꾸거나 네임 스페이스로 유형을 한정해야합니다. 이것은 C++에 의해 수행되는 것과 매우 다릅니다. C#은 문맥 적이며 일반적으로 컨텍스트에 따라 유형이나 속성을 사용할지 여부를 알 수 있습니다. – Phil1970

답변

4

그것은 전례없이 아니에요, 난 당신이

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

:

private Test TestResults { get; set; } 

또는

private TestData Test { get; set; } 
+1

나는 이것을 좋아한다. 나는 또한 마이크로 소프트가 어떻게 작동하는지 조사 해왔다. 나는 그게 더 좋다고 생각한다. 테스트는 실제로 제품의 테스트이므로, 구체적인 클래스는 ProductTest이고 속성은 테스트이므로 그래서 나는 가지고있다. 개인 ProductTest 테스트 {get; 세트; }. – Martin

1

이 같은 뭔가가 내 가이드 라인입니다. :)

+1

공개 필드 규칙은 Microsoft에서 권장하는 이름 지정 지침을 따르지 않습니다. 당신이 * 공공 분야를 가지고 있다는 사실이나 당신이 낙타를 썼다는 사실도 마찬가지입니다. –

+1

글쎄, 내 게시물의 끝으로 상태 : "이들은 단지 내 자신의 의견입니다 :)" 나는 공개 필드를 사용하는 것은 아니지만, 그것이 어떤 이유로 발생하면, 그 이름을 어떻게 지을 것입니다 :) –