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