После программирования на 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;
}
В обзорах кода я вообще не поймал этого. Поэтому я думаю, что это не такая ужасная привычка, но она "нетрадиционная". Мне любопытно, что думают люди.
Я очень осторожно отношусь к вариантам, которые я делаю для имен функций и переменных, а типичный комментарий к обзору - это "код действительно ясный", и, кроме того, мне совсем не мешает напечатать дополнительный !
в начале вызова функции. Но что ты говоришь, о могущественных из них?