Как назвать коллекцию флагов?

например, у меня есть следующее перечисление флага:

[Flags]
public enum Colors
{
    Red = 1,
    Green = 2,
    Blue = 4
}    

по данным MS Guidelines:

do name флаг перечисления с множественным числом существительных или существительных фраз и простых перечислений с единственными существительными или существительных фраз.

поэтому я использовал множественное число здесь. Теперь есть еще одна директива название коллекции во множественном числе:

свойства коллекции имен с множественным числом описание элементов в коллекции вместо использования единственной фразы, за которой следует "Список" или "коллекция"."

у меня есть класс, что-то вроде этого:

public class Foo
{
    public IEnumerable<Colors> Colors { get; set; }
}

проблема в том, что это становится очень запутанным, когда я пытаюсь работать с отдельными элементами в этой коллекции - они также colors. Так как же мне назвать коллекцию флагов?

EDIT:

хорошо, пример не очень ясен, я согласен. Может быть, этот лучше:

[Flags]
public enum Operations
{
    TextFormatting = 1,
    SpellChecking = 2,
    Translation = 4
}

public class TextProcessingParameters
{
    public IEnumerable<Operations> Operations { get; set; }
    // other parameters, including parameters for different operations
}

после завершения текстового процессора он имеет несколько результатов-по одному для каждого operations на Operations коллекция (уже запутанная), например, один для SpellChecking и TextFormatting, а другой Translation только.

2 ответов


соглашаясь с комментариями к вопросу, что что-то не совсем правильно, я бы предположил, что если имя перечисления выбрано более тщательно, чтобы отразить "компонентный" характер каждого элемента, который он может представлять, проблема, кажется, уходит.

например, оригинал переименован:

[Flags]
public enum ColorComponents
{
    Red = 1,
    Green = 2,
    Blue = 4
}

public class Foo
{
    public IEnumerable<ColorComponents> Colors { get; set; }
}

и обновленный пример переименован:

[Flags]
public enum OperationComponents
{
    TextFormatting = 1,
    SpellChecking = 2,
    Translation = 4
}

public class TextProcessingParameters
{
    public IEnumerable<OperationComponents> Operations { get; set; }
    // other parameters, including parameters for different operations
}

вы также можете принять немного другой подход, переименовав коллекцию, чтобы отразить композиционный аспект каждого элемента в коллекции:

[Flags]
public enum Operations
{
    TextFormatting = 1,
    SpellChecking = 2,
    Translation = 4
}

public class TextProcessingParameters
{
    public IEnumerable<Operations> OperationSets { get; set; }
    // other parameters, including parameters for different operations
}

первый подход кажется немного чище, хотя.


Я бы ожидал Operations в список Operation, а не список Operations. К сожалению, вы не можете pluralize Operation два раза.

таким образом, я бы взял прагматический подход и изобрел новое слово для вашего перечисления флага, которое

  • грамматически единственное число, но
  • по-прежнему представляет собой сочетание отдельных значений перечисления, а не одного из них.

для аргументации, давайте назовем перечислимые OpCombination -- совмещение операций. Тогда вы можете назвать список естественно:

public IEnumerable<OpCombination> OpCombinations { get; set; }