열거를위한 단수 또는 복수?


94

열거에 단수 또는 복수를 사용합니까? 나는 선언에서 복수형이 가장 합리적이라고 생각합니다.

enum Weekdays
{
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday,
    Sunday
}

...하지만 유형을 사용할 때 단수를 사용하는 것이 더 합리적이라고 생각합니다.

Weekday firstDayOfWeek = Weekday.Monday;

나는 단수형 whith 정규 열거 형 및 플래그와 함께 복수형을 사용하는 권장 사항을 읽었지만 더 많은 장단점을 듣고 싶습니다.


열거자가 아닌 열거 여야합니다.
Reed Copsey

답변:


94

다음은 Microsoft에서 직접 제공 한 것입니다.

http://msdn.microsoft.com/en-us/library/4x252001(VS.71).aspx

대부분의 Enum 유형에는 단수 이름을 사용하지만 비트 필드 인 Enum 유형에는 복수 이름을 사용합니다.


1
비트 필드는 복수화되어야합니다.
M. Dudley

2
다음은 열거 형 설계를위한 MSDN 지침의 최신 버전입니다. msdn.microsoft.com/en-us/library/ms229058.aspx
Rodney S. Foley

제가 읽은 책 중 하나는 Framework Design Guidelines 입니다. 기본적으로 수년에 걸쳐 .NET 프레임 워크 개발에 큰 역할을 한 15 명 이상의 작성자가 작성했습니다. 이 책은 그들이 프레임 워크 API를 개발할 때 그들의 사고 과정에 대한 통찰력을 제공하며, 그렇게함으로써 마이크로 소프트 프레임 워크, 툴킷 등을 탐색 할 때 경계선을 잡을 수 있습니다. docs 웹 사이트이지만 이것은 매우 멋지게 패키징합니다.
Lopsided

30

한 가지 권장 사항은 .NET Framework 디자인 지침 ( 59-60 페이지) 에서 제공됩니다 .

그 값은 비트 필드 않는 한, 열거에 대한 단일 유형 이름을 사용합니다.

public enum ConsoleColor {
  Black,
  Blue,
  Cyan,
  ...

값으로 비트 필드 열거에 대한 복수의 타입 이름을 사용, 또한 플래그 열거했다.

[Flags]
public enum ConsoleModifiers {
  Alt,
  Control,
  Shift
}

14

.NET Framework에서 대부분의 "일반"열거 형 (예 :) DayOfWeek에는 단수 이름이 있고 플래그 열거 형 (예 : StringSplitOptions, BindingFlags)에는 복수 이름이 있습니다. 플래그 열거 형의 값은 여러 항목을 나타낼 수 있지만 플래그가 아닌 열거 형의 경우 단일 항목 만 나타낼 수 있습니다.


5

일반적으로 열거 형 정의는 유형 정의로 간주되며 열거 형의 값은 유형이 가질 수있는 다른 값입니다. 따라서 단일 이름을 얻습니다. enum Weekday { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }; enum CoffeeSize { SMALL, MEDIUM, LARGE };

예. 열거 형을 클래스로 구현하는 정신적 경험을한다면, 유형에 대해 단수 이름을 사용한다는 사실은 그러한 열거 형에 단수 이름을 사용하는 것이 합리적이라는 것을 드러내야합니다. 예 :

struct Weekday {};

const Weekday SUNDAY;
const Weekday MONDAY;
const Weekday TUESDAY;

...

void func (Weekday *day)
{
   if (day == &SUNDAY)
       ...
}

열거 형에서 복수형을 선호하는 사람을 위해 이름을 지정 struct Weekdays하시겠습니까?


2

일반적으로 열거 형 정의는 유형 정의로 간주되며 열거 형의 값은 유형이 가질 수있는 다른 값입니다. 따라서 단일 이름을 얻습니다.

enum Weekday { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY };

enum CoffeeSize { SMALL, MEDIUM, LARGE };

2

Microsoft 는 특성을 사용하지 않는 한 열거 형에 단일 이름을 사용하는 것이 좋습니다Flags . 그리고 Framework Design Guidelines 책에서 가져온 것처럼 열거 형 이름에 Enum, Flags 등을 접두사로 붙이면 안되며, 예전의 VB 열거 형에서 흔히 볼 수 있었던 약어 나 두문자어를 열거 형 값에 접두사로 붙이면 안됩니다.


그러나 실제로 이유가 있습니까? 인터페이스 접두사에는 'I'가 붙습니다. 열거 형 앞에 'E'를 붙이고 플래그에 'F'를 붙이지 않는 이유는 무엇입니까? 그것은 그것을 명백하게 만들 것입니다. 나는 다른 것을 접두사로 붙이는 것을 좋아하지 않지만 유형이 변경되지 않는 인터페이스와 같은 특수한 경우입니다.

0

일관성이있는 한 주관적이고 무엇을 사용하든 상관 없습니다.


11
그것은 문제가된다. 규칙은 가독성과 유지 관리를 촉진합니다. 개인적 일관성은 기존의 일관성과 비교되지 않습니다.
수류탄

1
각 라이브러리에 자체 "주관적"의견이있는 경우 일관성을 유지하기 어렵습니다.
Paul Biggar

1
나는 Microsoft가 단수를 사용한다고 말했듯이 모두 단수를 사용해야한다고 생각합니다. 아니. 복수화 및 단 수화 (?)와 일치하는 한 실제로는 중요하지 않습니다.
Jaimal Chohan

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.