Лучший способ кодирования возврата результата истинного / ложного вызова - PullRequest
0 голосов
/ 17 ноября 2010

Много раз я пишу функцию, которая возвращает true в случае успеха и false в случае ошибки / сбоя, и, по сути, оборачивает другую функцию, которая делает то же самое.

Пример (в основном язык-независимо, но я напишу в ECMAScript для ознакомления):

function SendEmail(to, from, subject, body) {
 var eml = new EmailObj();
 eml.To = to;
 eml.From = from;
 eml.Subject = subject;
 eml.Body = body;
 return eml.Send(); // This will return true/false
}

Но иногда я хочу сделать что-то еще в зависимости от результата внутренней функции (скажем, специфической для журнала информации):

function SendEmail(to, from, subject, body) {
 var eml = new EmailObj();
 eml.To = to;
 eml.From = from;
 eml.Subject = subject;
 eml.Body = body;
 if(!eml.Send()) {
  Log("Error in send: " + eml.Response);
  return false;
 }

 return true;
}

Но я никогда не чувствую, что написал хороший код, когда делал что-то подобное.

Не могли бы вы написать по-другому?Я параноик?Или вы думаете, что эта модель сама по себе приводит к этой дилемме, и я должен посмотреть, смогу ли я изменить подход (ы) более высокого уровня?

Ответы [ 2 ]

4 голосов
/ 17 ноября 2010

Не знаю точно, почему вы беспокоитесь об этом, но есть еще один вариант:

var ret = eml.Send();
if (!ret)
  Log("Error in send: " + eml.Response);
return ret;
3 голосов
/ 17 ноября 2010

Если язык поддерживает это (JavaScript поддерживает), вы также можете рассмотреть Обработка исключений .

...