#c_sharp #enum
Применяют ли на реальных проектах перечисления enum? Если да, то в каких use-case? Я читал, что с данными типами в будущем могут появиться проблемы, связанные с управлением версиями (тут источник) У меня есть класс ChessFigure, у которого есть свойство Colour. Хочу сделать перечисление "Black" и "White", но не уверен, что это нужно (альтернатива: свойство сделать типа bool и переименовать его в IsWhite). UPD. Цель, которую я преследую - создать удобно поддерживаемую библиотеку классов.
Ответы
Ответ 1
Да, конечно используется. Например, в проекте, над которым я сейчас работаю, ровно 125 enum'ов. Из двух вариантов bool IsBlack или enum PieceColor { White, Black } второй вариант кажется мне более предпочтительным. Например, вы не сможете при втором варианте случайно присвоить несвязанное булево значение: IsBlack = IsGameSaved скомпилируется, а Color = IsGameSaved — нет. Кроме того, если у вас функция выглядит как void MakeMove(bool isBlack) { ... } то глядя на код MakeMove(true), нужно ещё вспомнить, что же означает это самое true: белый цвет, чёрный, или вообще живого игрока в отличие от противостоящего ему искусственного интеллекта. С вызовом MakeMove(PieceColor.White) вопросов не возникает. Так что да, для удобства лучше использовать enum'ы.Ответ 2
Например у Вас есть сущность товара в магазине. У него допустим есть ряд состояний : В наличии. Снят с продажи. Возможна доставка. В базе Вы определенно будете это хранить в виде tinyint ( 0,1,2). А на коде, отражать через enum, что очень сильно облегчает читаемость кода, вам не надо будет помнить что такое 1, а что такое 2.Ответ 3
Если ты роботаеш с 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){ }
Комментариев нет:
Отправить комментарий