Является ли плохой практикой использование -1 в качестве недопустимого значения (для перечислений и, возможно, неизвестных значений) - PullRequest
4 голосов
/ 13 июня 2011

Это плохая идея использовать -1 как недопустимое значение для значения перечисления (для перечислений, которые начинаются с 0 или больше). Для неинициализированных значений или значений, которые больше не должны иметь допустимых значений. Как насчет тестирования того, как функции работают с недействительными

#define INVALID_ENUM_VALUE -1

Как насчет установки случайного значения uint в -1, если оно неинициализировано / недопустимо (скажем, идентификатор ресурса).

#define INVALID_UNINT_VALUE -1

Есть ли потенциальные проблемы с переносом? Маловероятно, что действительное целое число будет иметь это значение, если программа не очень сложна и не выполняется в течение длительного времени. Должен ли я использовать UINT_MAX? Сдаться и просто использовать bool для отслеживания действительного состояния?

Ответы [ 2 ]

4 голосов
/ 13 июня 2011

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

3 голосов
/ 13 июня 2011

Вот подходы, которые я использую:

  • Если вы используете enums, добавьте другое значение для «недопустимого состояния»
  • Если у вас есть функция, которая возвращает,скажем, int, либо:
    • возвращает вместо struct дополнительное поле (например, valid_result или error), либо
    • принимает указатель наint, который вы изменяете для результата и получаете возвращаемое значение, сообщают об ошибке
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...