예를 들어 다음과 같은 클래스가 있습니다.
class Dog { } //never mind that there's nothing in it...
그리고 다음과 같은 속성 :
Dog Dog { get; set; }
더 상상력이 풍부한 이름을 만들 수 없다면 다음을 사용해야한다고 들었습니다.
Dog DogObject { get; set; }
더 나은 이름을 지정하는 방법에 대한 생각이 있습니까?
Person
Dog
Dog
예를 들어 다음과 같은 클래스가 있습니다.
class Dog { } //never mind that there's nothing in it...
그리고 다음과 같은 속성 :
Dog Dog { get; set; }
더 상상력이 풍부한 이름을 만들 수 없다면 다음을 사용해야한다고 들었습니다.
Dog DogObject { get; set; }
더 나은 이름을 지정하는 방법에 대한 생각이 있습니까?
Person
Dog
Dog
답변:
컨텍스트를 기반으로 코드에서 말하는 내용이 이미 분명하다는 사실이 아니기 때문에 나쁜 습관 일 수 있습니다.
Dog = new Dog();
유형 생성자는 무엇입니까? 어떤 물체입니까? 혼란스럽지 않습니까? 좋아, 어때?
Dog = Dog.Create()?
어떤 물체입니까? 유형의 정적 팩토리 메소드는 무엇입니까? 아직도 혼란스럽지 않습니까? 나는 그렇게 생각하지 않았다.
이것이 잠재적 인 문제라고 본 유일한 시간은 네임 스페이스 트리가 상당히 정교 해지고 컴파일러가 모호성을 파악할 수없는 경우입니다.
Dog = new Some.Namespace.Dog();
어쨌든 로컬 변수 이름은 항상 camelCased되므로 모호성을 완전히 피하기 때문에 자동 속성 (및 열거 형)에서만 발생합니다.
dog = new Dog();
Dog
인스턴스 메소드가있는 경우 두 번째 것이 혼란 스러울 수 있다고 생각 Create
하지만 그 시점에서 꽤 끔찍한 코딩 방법을 배우고있을 것입니다.
이것은 합리적인 관행 일뿐만 아니라,이를 가능하게하도록 특별히 고안된 것입니다. 규칙 및 자리 맞추기에 대한 "색상"에 대한 C # 사양을 검색하고 다음을 참조하십시오.
http://blogs.msdn.com/b/ericlippert/archive/2009/07/06/color-color.aspx
이 결정에서 발생하는 흥미로운 코너 사례에 대해.
어떠한 경우에도 유형과 동일하게 호출되지 않도록 속성 이름을 "DogObject"로 지정해서는 안됩니다. 이는 프레임 워크 디자인 가이드 라인과 직접 모순됩니다.
Color
그러한 사용은 합리적입니다. 그러나 가변 또는 IDisposable
유형이 마음에 들지 않습니다 . "컨트롤 Font
"은 속성에 의해 캡슐화 된 상태의 측면 또는 Font
속성 게터에 의해 식별 된 인스턴스를 의미 합니까?
그것을 호출하는 것은 완벽하게 괜찮 Dog
으며 실제로는 프레임 워크 명명 지침 에서 Microsoft가 권장하는 것입니다 .
유형과 이름이 같은 속성을 제공하는 것을 고려하십시오.
예를 들어 다음 속성은 Color라는 열거 형 값을 올바르게 가져 와서 설정하므로 속성 이름은 Color입니다.
위의 가이드에서 사용하는 예제는 다음과 같습니다.
public enum Color {...}
public class Control {
public Color Color { get {...} set {...} }
}