Как назвать коллекцию флагов?
например, у меня есть следующее перечисление флага:
[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; }