비슷한 것을 읽었지만 정확히 내가 원하는 것을 읽지 않아도이 질문을하고 있습니다. 열거 형과 일치하는 속성에 대한 C # 명명 규칙 있습니다.
열거 형을 복수형으로 명명 한 다음 단일형으로 ‘사용’하는 경향이 있음을 발견했습니다.
public enum EntityTypes {
Type1, Type2
}
public class SomeClass {
/*
some codes
*/
public EntityTypes EntityType {get; set;}
}
물론 작동하며 이것이 내 스타일이지만 누구나 그러한 규칙에 잠재적 인 문제를 찾을 수 있습니까? 그래도 “Status”라는 단어로 “못생긴”이름이 있습니다.
public enum OrderStatuses {
Pending, Fulfilled, Error, Blah, Blah
}
public class SomeClass {
/*
some codes
*/
public OrderStatuses OrderStatus {get; set;}
}
추가 정보 : 내 질문이 명확하지 않을 수 있습니다. 정의 된 열거 형 유형의 변수 이름을 지정할 때 종종 열심히 생각해야합니다. 모범 사례를 알고 있지만 이러한 변수의 이름 지정 작업을 쉽게하는 데 도움이되지 않습니다.
모든 열거 형 속성 (예 : “Status”)을 “MyStatus”로 표시 할 수 없습니다.
내 질문 : 위에서 설명한 내 컨벤션에 문제가있는 사람이 있습니까? 모범 사례가 아닙니다.
질문 문구 :
글쎄, 나는 이런 식으로 질문을해야한다고 생각한다. 누군가 열거 형의 이름을 지정하는 좋은 일반적인 방법을 사용할 수 있습니까?
답변
비트 필드를 나타내는 Enum
경우가 아니라면 s에 단수를 사용하는 것이 좋습니다 . 열거 유형 명명 규칙 (Microsoft 명명 지침 의 하위 집합)을 참조하십시오 .Enum
FlagsAttribute
설명에 답하기 위해 다음 중 하나에 아무런 문제가 없습니다.
public enum OrderStatus { Pending, Fulfilled, Error };
public class SomeClass {
public OrderStatus OrderStatus { get; set; }
}
또는
public enum OrderStatus { Pending, Fulfilled, Error };
public class SomeClass {
public OrderStatus Status { get; set; }
}
답변
복수형으로 열거 형을 명명하기 시작했지만 이후 단수형으로 변경되었습니다. 그들이 사용되는 곳에서 더 의미가있는 것 같습니다.
enum Status { Unknown = 0, Incomplete, Ready }
Status myStatus = Status.Ready;
다음과 비교하십시오 :
Statuses myStatus = Statuses.Ready;
문맥에서 더 자연스럽게 들리는 단수형을 찾습니다. 우리는 한 곳에서 발생하는 열거 형을 선언 할 때 “이것은 무엇이든의 그룹입니다”라고 생각하지만 많은 곳에서 사용하면 “이것은 무엇이든”이라고 생각합니다 .
답변
상황은 실제로 복수형에 적용되지 않습니다.
는 enum
무언가 또는 다른 사람의 속성을 보여줍니다. 예를 들어 보겠습니다.
enum Humour
{
Irony,
Sarcasm,
Slapstick,
Nothing
}
하나의 유형을 가질 수 있지만 복수형이 아닌 다 중형으로 생각하십시오.
Humour.Irony | Humour.Sarcasm
오히려
Humours { Irony, Sarcasm }
유머 감각이 있고 유머 감각이 없습니다.
답변
일반적으로 모범 사례 권장 사항은 [Flags] 특성이 첨부되어 있고 (따라서 비트 필드를 포함 할 수있는) 열거 형을 제외하고는 단수형입니다.
편집 된 질문을 읽은 후 속성 이름이나 변수 이름이 열거 형 이름과 달라야한다고 생각할 수 있습니다. 다음은 완벽하게 괜찮습니다 …
public enum Status { New, Edited, Approved, Cancelled, Closed }
public class Order
{
private Status stat;
public Status Status
{
get { return stat; }
set { stat = value; }
}
}
답변
이것은 내가 그것에 반대 할 정도로 컨벤션에 동의하지 않는 몇 안되는 곳 중 하나입니다. TBH, 열거 형과 그 인스턴스의 정의가 동일한 이름을 가질 수 있다는 것을 싫어합니다. 모든 열거 형을 “Enum”으로 접미사로 지정하면 주어진 사용법에서 컨텍스트가 무엇인지 명확하게 알 수 있기 때문입니다. IMO는 코드를 훨씬 더 읽기 쉽게 만듭니다.
public enum PersonTypesEnum {
smart,
sad,
funny,
angry
}
public class Person {
public PersonTypesEnum PersonType {get; set;}
}
아무도 열거 형과 그 인스턴스를 혼동하지 않습니다.
답변
다음과 같이 간단하지만 금지 된 코드를 작성하려는 경우 :
public class Person
{
public enum Gender
{
Male,
Female
}
//Won't compile: auto-property has same name as enum
public Gender Gender { get; set; }
}
옵션은 다음과 같습니다.
-
MS 권장 사항을 무시하고 열거 형 이름에 접두사 또는 접미사를 사용하십시오.
public class Person { public enum GenderEnum { Male, Female } public GenderEnum Gender { get; set; } }
-
열거 정의를 클래스 외부로, 바람직하게는 다른 클래스로 이동하십시오. 위의 쉬운 해결책은 다음과 같습니다.
public class Characteristics { public enum Gender { Male, Female } } public class Person { public Characteristics.Gender Gender { get; set; } }
답변
모범 사례-단수형을 사용하십시오. Enum을 구성하는 항목 목록이 있습니다. 말할 때 목록에서 항목을 사용하는 것이 이상하게 들립니다.Versions.1_0
. Version.1_0
1_0 버전이 하나만 있기 때문에 말하는 것이 더 합리적 입니다.