更好的方法来返回返回true / false调用的结果

时间:2010-11-17 00:09:16

标签: javascript language-agnostic function conditional

很多时候,我正在编写一个函数,它会在成功时返回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 个答案:

答案 0 :(得分:4)

不确定为什么你会担心它,但另一种选择是:

var ret = eml.Send();
if (!ret)
  Log("Error in send: " + eml.Response);
return ret;

答案 1 :(得分:3)

如果语言支持(JavaScript也支持),您还可以考虑Exception Handling