很多时候,我正在编写一个函数,它会在成功时返回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;
}
但是,当我做那样的事情时,我从来没有觉得我写过好的代码。
你会这样写吗?我是偏执狂吗?或者你认为这种模式本身会导致这种困境,我应该看看是否可以改变更高层次的方法?
答案 0 :(得分:4)
不确定为什么你会担心它,但另一种选择是:
var ret = eml.Send();
if (!ret)
Log("Error in send: " + eml.Response);
return ret;
答案 1 :(得分:3)
如果语言支持(JavaScript也支持),您还可以考虑Exception Handling。