Enum — это анти-паттерн? Почему?

207
20 апреля 2018, 13:44

Правда ли, что enum- это анти-паттерн и его всячески нужно избегать?

Если да, то почему?

Answer 1

Нет, это миф. Перечисление используется для представления определенной семантики - целочисленный тип с множеством именованных допустимых значений (хоть язык и позволяет присвоить перечислению любые значения, для этого требуется явное приведение, так что типобезопасность соблюдается). Класс с набором статических readonly-полей (или свойств) представляет другую семантику - тип, в котором некоторые значения имеют особый смысл, но другие значения тоже являются допустимыми.

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

Другое дело, что иногда enum используют как замену нормальной иерархии классов: вместо наследования с переопределением абстрактных методов пихают enum-поле и один большой спагетти-метод со switch. Это действительно можно считать "антипаттерном", так как от этого страдает читаемость кода и удобство работы с ним в IDE.

Связанный вопрос: When are enums NOT a code smell?

READ ALSO
SQL-запрос в C# для вывода из label в Access

SQL-запрос в C# для вывода из label в Access

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

234
visual studio перевод языка [требует правки]

visual studio перевод языка [требует правки]

В visual studio после смены языка с английского на русский отменяется ввод

188
Ошибка установки Nuget entity framework

Ошибка установки Nuget entity framework

При попытке установки пакета Entity Framework возникает ошибка

318
Убрать выделение с листбокса

Убрать выделение с листбокса

Имеется вот такой listbox ссылкаКак сделать так чтобы при наведении и нажатии на него не выделялся Item (Синем цветом в моем случае)

180