Применяют ли на реальных проектах перечисления enum? Если да, то в каких use-case? Я читал, что с данными типами в будущем могут появиться проблемы, связанные с управлением версиями (тут источник)
У меня есть класс ChessFigure, у которого есть свойство Colour. Хочу сделать перечисление "Black" и "White", но не уверен, что это нужно (альтернатива: свойство сделать типа bool и переименовать его в IsWhite).
UPD. Цель, которую я преследую - создать удобно поддерживаемую библиотеку классов.
Да, конечно используется. Например, в проекте, над которым я сейчас работаю, ровно 125 enum'ов.
Из двух вариантов bool IsBlack или enum PieceColor { White, Black } второй вариант кажется мне более предпочтительным.
Например, вы не сможете при втором варианте случайно присвоить несвязанное булево значение: IsBlack = IsGameSaved скомпилируется, а Color = IsGameSaved — нет.
Кроме того, если у вас функция выглядит как
void MakeMove(bool isBlack) { ... }
то глядя на код MakeMove(true), нужно ещё вспомнить, что же означает это самое true: белый цвет, чёрный, или вообще живого игрока в отличие от противостоящего ему искусственного интеллекта. С вызовом MakeMove(PieceColor.White) вопросов не возникает.
Так что да, для удобства лучше использовать enum'ы.
Например у Вас есть сущность товара в магазине. У него допустим есть ряд состояний :
В наличии.
Снят с продажи.
Возможна доставка.
В базе Вы определенно будете это хранить в виде tinyint ( 0,1,2). А на коде, отражать через enum, что очень сильно облегчает читаемость кода, вам не надо будет помнить что такое 1, а что такое 2.
Если ты роботаеш с Api и у тебя есть набор допустимых значений, удобно использовать enum. e.g.
Returns candlestick chart data. Required GET parameters are "currencyPair", "period" (candlestick period in seconds; valid values are 300, 900, 1800, 7200, 14400, and 86400).
internal enum Period
{
S300 = 300,
S900 = 900,
...
}
Удобние делать enum, что бы не делать лишних проверок
returnChartData(some arg, ..., Period perior){
}
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости