很多时候,我正在编写一个将在成功时返回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;
}


但是,当我做这样的事情时,我从来没有觉得自己写过很好的代码。

你会这样写吗?我是偏执狂吗?还是您认为这种模式本身导致了这种困境,我应该看看我是否可以更改更高级的方法?

最佳答案

不知道确切为什么会为此担心,但是另一种选择是:

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

10-05 19:22