Должен ли я вернуть значения TRUE / FALSE из функции C? - PullRequest
12 голосов
/ 18 февраля 2009

После программирования на C в течение нескольких лет я понял, что игнорирую соглашение C о возвращении нуля из функции, указывающей на успех. Соглашение кажется мне семантически неправильным, поскольку ноль, конечно, ложен. Проблема в том, что мне нравится называть функции, например, is_valid_foobar(), и чтобы соответствовать условию «ложные средства успеха», мне нужно быть более расплывчатым ... то есть вместо:

if ( ! is_valid_foobar() ) {
    return (error);
}

Другие программисты пишут:

if ( validate_foobar() ) {
     return (error);
}

И моя реализация выглядит так:

int is_valid_foobar (int foobar ) {
     if ( foobar < MAX_ALLOWED ) {
          return TRUE;
      }
      return FALSE;
}

На самом деле я не замечал этого в обзорах кода. Так что я думаю, что это не такая уж ужасная привычка, но она «нетрадиционная». Мне любопытно, что думают люди.

Я очень осторожен с выбором, который я делаю для имен функций и переменных, и типичным комментарием к обзору является "код действительно ясен", и, кроме того, меня совсем не беспокоит необходимость набирать дополнительный 1013 * в начале вызова функции. Но что ты говоришь, о могущественные из С.О?

Ответы [ 11 ]

0 голосов
/ 18 февраля 2009

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

Соглашение «ненулевое значение ошибки» используется при попытке сказать почему вместе с флагом ошибки.

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