Лучшая практика при возврате чего-либо из рутины - PullRequest
2 голосов
/ 09 июля 2009

Какая лучшая практика при возврате чего-либо из рутины? Должен ли я возвращать бит состояния всегда или только при ошибке? Например:

Возврат (0, «Сбой из-за….») При ошибке,
Возврат (1, success_value, second_success_value) в случае успеха.

Или

Возврат (0, «Сбой из-за….») При ошибке,
Возврат (success_value, second_success_value) в случае успеха.

Я обычно программирую на Perl, но, наверное, вопрос касается того, на каком языке я мог бы пытаться программировать. Спасибо!

Ответы [ 3 ]

3 голосов
/ 09 июля 2009

Ответ очень зависит от языка. Вы должны следовать идиоме для языка, который вы используете. Идиома для Perl, которую вы упомянули, состоит в том, чтобы возвращать ноль (0) для успеха и другие значения для неудачи. Если вам нужно вернуть несколько значений, как в вашем примере, одним из них всегда может быть код успеха / сбоя.

Если вы используете язык, который поддерживает исключения (например, Java, C #, C ++), то вы должны указать исключительные условия (например, сбои), используя исключение. Если процедура завершается нормально (т.е. без исключений), то можно предположить, что она прошла успешно, и любые возвращаемые значения можно безопасно использовать.

1 голос
/ 09 июля 2009

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

Где это применимо, вы должны выдавать исключения правильного типа (например, ArgumentNullException или InvalidOperationException в .Net)

0 голосов
/ 09 июля 2009

Эй, Акерс, я задавал себе подобный вопрос в прошлом ...

Некоторые из этих ответов могут вам помочь

Разве это плохая практика - возвращать исключения из ваших методов

Основной вывод, к которому я пришел, - возвращать что-либо, что угодно, если этого требует вызывающий абонент.

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

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