img

Что такое перечисления в программировании и для чего они нужны?

Перечисления, или перечисляемые типы данных, - это список постоянных значений с именами, которые удобны для разработчиков. В программировании они нужны для того, чтобы определить набор предопределенных значений, которые может принимать переменная. https://www.howtogeek.com/wp-content/uploads/csit/2021/04/a868be70-5.png?width=1198&trim=1,1&bg-color=000&pad=1,1

Определение списка значений

Перечисления – это список значений, где каждое значение уникально. В перечислении не может быть двух значений с идентичными именами. Это весьма полезно, если нужно определить все возможные варианты значений, которые может обрабатывать функция. 

Например, у вас есть перечисление под названием «Fruits». В нем хранится список фруктов, которые понятны для приложения. Именно в этом и есть ключевое отличие перечисления от использования строки для того, чтобы представить эту переменную, – строка может иметь бесконечное число возможных значений, а это перечисление – только три. 

https://www.howtogeek.com/wp-content/uploads/csit/2021/04/a868be70.png?trim=1,1&bg-color=000&pad=1,1

Это перечисление вы можете использовать в своем коде, например, для того, чтобы проверить, соответствует ли тип пользовательского ввода элементу Apple, или для передать его оператору switch/case в качестве аргумента для того, чтобы выполнить определенные действия для каждого типа возможного значения. 

https://www.howtogeek.com/wp-content/uploads/csit/2021/04/a868be70-1.png?trim=1,1&bg-color=000&pad=1,1

С точки зрения внутренней структуры перечисления сами по себе являются значениями. Это, конечно, зависит от реализации языка, но, например, в C# перечисления по умолчанию являются целыми значениями. Значения по умолчанию начинаются с 0, 1, 2, 3 и т.д., но их можно изменить вручную. Можно установить определенное значение для каждого элемента перечисления. Например, это могут быть коды состояния HTTP:

https://www.howtogeek.com/wp-content/uploads/csit/2021/04/a868be70-2.png?trim=1,1&bg-color=000&pad=1,1

Они могут преобразовываться из значения в перечисление и наоборот с помощью простого приведения типов:

https://www.howtogeek.com/wp-content/uploads/csit/2021/04/a868be70-3.png?trim=1,1&bg-color=000&pad=1,1

Перечисления не просто полезны для определения набора элементов, но они также неплохо помогают разработчикам. Даже если вы конвертируете данные в строковый или целочисленный тип перед тем, как отправить их в API, использования перечислений в вашей кодовой базе в любом случае обеспечит большую гибкость и приведет ваш код в порядок. 

К тому же, наличие выпадающих списков с автозаполнением со списком возможных значений может помочь не только вам, но и любому, кто будет работать с вашей кодовой базой в дальнейшем. Никто не хочет сопровождать программный код, который в качестве аргументов принимает строки и выполняет случайные действия, основываясь на входных данных. Использование перечислений, напротив, строго определяет то, как себя будет вести приложение. 

Недостатки использования перечислений

Основной недостаток перечислений заключается в том, что, как только они перестают находиться в вашей кодовой базе, они теряют свое особое значение. Например, у вас есть API, в котором вы сохраняете и отправляете данные. Для начала вам необходимо сериализовать перечисление, которое, скорее всего, по умолчанию принимает базовые значения 0, 1, 2 и т.д. Некоторые языки программирования поддерживают перечисления с базовыми строковыми значениями или настраивают правила сериализации перечислений так, чтобы сгладить эту проблему. 

Проблемой может стать и изменение перечислений. Как только вы начинаете использовать перечисление, вы не можете больше менять порядок элементов. У вас есть право только добавить элементы в конец списка. В противном случае хранящиеся данные, которые используют старую версию перечисления, перестанут быть актуальными и будут искажены. 

Перечисления как флаги

Еще одно популярное направление использования перечислений – это определение битовых флагов. Это достаточно продвинутая концепция, но по сути речь идет о том, что каждое значение перечисления – это логическое значение. Все эти перечисления можно хранить вместе в одном целом числе и использовать для выполнения быстрого поиска логических данных.

Это действительно работает, потому что каждое значение перечисления соответствует разным битам базового числа. Для двоичного представления значения перечисления будут следующие: 0, 1, 2, 4, 8, 16 и т.д. И вы можете соединить их вместе, чтобы получить список логических значений. 

https://www.howtogeek.com/wp-content/uploads/csit/2021/04/a868be70-5.png?width=1198&trim=1,1&bg-color=000&pad=1,1

Почему именно такой вариант, а не несколько логических значений? Что ж, во-первых, это экономит место, а это в некоторых ситуациях (когда у вас их много) может быть очень на руку. Но, что еще важнее, при таком подходе можно очень быстро получить доступ к каждому значению, особенно если вам нужно получить доступ к нескольким значениям. Например, вы хотите проверить, выходной сегодня или нет. Вы можете проверить суббота сегодня или воскресенье (Saturday | Sunday), и все это из того же байта, что был загружен в память. Центральному процессору необходимо извлечь лишь один элемент, чтобы получить список всех флагов. 

Ссылка
скопирована
Программирование
Скидка 25%
Python-программист с нуля
Стань разработчиком на одном из самых популярных языков программирования.
Получи бесплатный
вводный урок!
Пожалуйста, укажите корректный e-mail
отправили вводный урок на твой e-mail!
Получи все материалы в telegram и ускорь обучение!
img
Еще по теме:
img
Хеш-таблицы — это структура данных, которая позволяет создавать список пар значений. Вы можете затем извлекать определённое знач
img
Если вы не новичок, вам может показаться, что перечисленные ниже ошибки очевидны. Но помните, что все зависит от вашего опыта. Н
img
Баги и ошибки неизбежны в программировании. Тем не менее они могут раздражать и вызывать разочарование в работе. Предлагаем разо
img
Как хороший разработчик на JavaScript, вы стремитесь писать чистый, надежный и поддерживаемый код. Возможно, вы замечали, что пи
img
Формы широко используются в веб-приложениях: одни для сбора данных о пользователях и их электронных адресах, другие — для выполн
img
  Сначала JavaScript может показаться довольно простым языком программирования. Однако он гораздо более сложный, чем можно предп
Комментарии
ОСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59