Насколько плохо отказываться от правила в C (иначе: вернуть 0 в случае успеха)? - PullRequest
4 голосов
/ 04 октября 2010

в текущем проекте я осмелился покончить со старым правилом 0, то есть вернуть 0 при успешном выполнении функции. Как это видно в сообществе? Логика, которую я навязываю коду (и, следовательно, сотрудникам и всем последующим программистам обслуживания):

.> 0: для любого успеха / достижения, то есть положительного результата

== 0: для оповещения об отсутствии прогресса, занятости или незавершенности, что означает ноль информации о результате

<0: для любого вида ошибки / неосуществимости, то есть <em>отрицательный результат

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

Opininons

PS: на заметку о том, что Римская империя рухнула, потому что римляне, у которых в системе счисления отсутствовала цифра 0, никогда не знали, когда их функции С будут успешными!

Ответы [ 13 ]

0 голосов
/ 04 октября 2010

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

0 голосов
/ 04 октября 2010

По моему мнению (и это мнение кого-то, кто склонен делать внеполосные сообщения об ошибках благодаря работе на Java), я бы сказал, что это приемлемо , если ваши функции имеют В любом случае требуется строгая обработка возвращаемого значения.

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

Если, однако, возвращаемое значение может быть проигнорировано или просто проверено на успешность в некоторых точках, тогда нестандартное решение создает довольно большую проблему (например, вы больше не можете использовать идиому if(!myFunction()) ohNoesError();.

0 голосов
/ 04 октября 2010

Это только соглашение.Я работал со многими API, которые отказываются от принципа, когда они хотят передать больше информации вызывающей стороне.Пока вы согласны с этим подходом, любой опытный программист быстро подберет стандарт.Трудно, когда каждая функция использует свой подход IE с Win32 API.

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