oop — улучшить читаемость перечислений в стеке переполнения

Проблема:

Проблема перечислений в том, что они уменьшают читаемость кода. Думать о

Motor.Turn (Full),

Что значит Full имею в виду? Какие были другие варианты (Half? Empty? Green? …)?

Идея:

Я хотел бы реализовать что-то вроде этого:

Motor.Turn (StepMode::Full)

или в другой ситуации:

Color c = Color::Red;

if (c == Color::Red)
/* Do something  */

else if (c == Color::Yellow)
/* Do something else  */

Это не только повысит удобочитаемость, но и упростит ввод текста, если я знаю название класса (Color в примере), так как моя IDE, вероятно, сможет перечислить все возможные варианты.

Вопросы:

  • Будет ли это (или что-то подобное) работать?
  • Это хорошая идея или пахнет?
  • Как мне спроектировать Color учебный класс? (Я, вероятно, могу написать код, но я не знаю, как его разработать)

Информация:

Я довольно новичок в C ++ и не знаю, как правильно выразить то, что я ищу. Поэтому я не смог найти решение с помощью Google или SO.

И: это мой самый первый вопрос по stackoverflow. \ О /

0

Решение

То, что вы хотите, это строго типизированные перечисления. Они объявлены так:

enum class Color {
Red, Green, Blue, Yellow
};

И использовал вот так:

Color c = Color::Red;

if (c == Color::Red)
/* Do something  */

else if (c == Color::Yellow)
/* Do something else  */

Обратите внимание, что перечислимые классы являются функциями C ++ 11, которые, возможно, потребуется включить в вашем компиляторе, передав -std=c++11 вариант.

7

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector