web-dev-qa-db-ja.com

列挙の単数または複数?

列挙には単数または複数を使用しますか?宣言で複数形にするのが一番いいと思います

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

...しかし、タイプを使用するときは、単数形の方が理にかなっていると思います。

Weekday firstDayOfWeek = Weekday.Monday;

私はどこかで、通常の列挙型とフラグ付きの複数の単数形を使用するための推奨事項を読みましたが、いくつかの長所と短所を聞きたいです。

81
Jan Aagaard

ここでそれはマイクロソフトから直接です:

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

ほとんどのEnumタイプには単数形の名前を使用しますが、ビットフィールドであるEnumタイプには複数形の名前を使用します。

82
Matt Ruwe

1つの推奨事項は、.NETからのものです フレームワーク設計ガイドライン 、59-60ページ:

Do値がビットフィールドでない限り、列挙には単数型名を使用します。

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

Doビットフィールドを値として持つ列挙型に複数の型名を使用します。フラグ列挙型とも呼ばれます。

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

.NET Frameworkでは、ほとんどの「通常の」列挙型(例:DayOfWeek)は単数の名前を持ち、フラグ列挙型(例:StringSplitOptionsBindingFlags)は複数の名前を持ちます。フラグ列挙型の値は複数のアイテムを表すことができるので、それは理にかなっていますが、非フラグ列挙型の場合は、単一のアイテムしか表すことができません。

13
Mehrdad Afshari

一般的に、列挙型の定義は型定義であると考えています。列挙型の値は、型が持つことができるさまざまな値です。したがって、単数形の名前が付けられます: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

5
Pedro Alves

一般的に、列挙型の定義は型定義であると考えています。列挙型の値は、型が持つことができるさまざまな値です。したがって、それは特異な名前を取得します:

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

enum CoffeeSize { SMALL, MEDIUM, LARGE };
2
Avi

Microsoft recommendsFlags属性を使用しない限り、列挙に単数形の名前を使用します。また、「Framework Design Guidelines」の本から引用したように、列挙型の名前にEnum、Flagsなどの接尾辞を付けたり、列挙値にVB enumerationsのように略語や頭字語を前置したりしないでください。昔に戻って。

2
Brian Gideon

C#/ Microsoftの規則と同様に、Javaの列挙型は単数形である必要があります: http://docs.Oracle.com/javase/tutorial/Java/javaOO/enum.html

0
tanguy_k

あなたが一貫している限り、それは主観的であり、あなたが何を使うかは問題ではありません(個人的に私はSqlの慣習からの繰り越しとして単数を使用します)

0
Jaimal Chohan