Добавление перечисления в середине - PullRequest
0 голосов
/ 26 апреля 2018

Я наткнулся на код, где мой коллега недавно изменил существующее перечисление и добавил другое перечисление незадолго до последнего перечисления. Я предполагаю, что он, возможно, сделал это, потому что последнее перечисление было Нет (мы не в том же часовом поясе, чтобы обсудить).

Меня беспокоит то, что если какой-либо код в решении попытается получить целочисленное значение None Enum (которое я нигде не смог найти, но как насчет того, что какой-то код попытается сделать в будущем), то это может привести к неправильным результатам. .

Разве это не безопасно?

  1. Либо добавить Enum в последнем
  2. Или связать целочисленное значение с каждым перечислением, чтобы можно было решить проблему с порядком?

Пожалуйста, пролите немного света.

Обновление: В одном из вопросов SO я прочитал @Marc Gravell, отметив, что вставлять в середину опасно, правильно ли я его понял? Пожалуйста, смотрите https://stackoverflow.com/a/12716043/2719527

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

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

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

0 голосов
/ 26 апреля 2018

Если вы беспокоитесь о критических изменениях, делайте то, что вы предлагаете. Самое безопасное - всегда присваивать значение каждому члену, таким образом, оно является явным, и вы не зависите от того, что компилятор генерирует что-то для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...