Страницы

Поиск по вопросам

среда, 31 октября 2018 г.

Применение enum на реальных проектах

Применяют ли на реальных проектах перечисления 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'ы.

Комментариев нет:

Отправить комментарий