所以这种类型的结构出现在我项目中的大多数 javascript 文件中。我的问题是,是否有理由在 setElements 之后返回 true 并在“if”语句中调用它,如下所示:
App.ModuleName.setElements = function() {
App.ModuleName.el = {
title: $("#title")
}
return true;
};
App.ModuleName.init = function() {
if (App.Common.checkDependency('ModuleName')) {
if(App.ModuleName.setElements()) {
//do something
}
}
};
而不是删除 return true 并只是这样做:
if (App.Common.checkDependency('ModuleName')) {
App.ModuleName.setElements();
//do something;
}
?
最佳答案
根据提供的代码,没有必要。考虑到这种情况,您的代码版本更加清晰。
但是你确实必须查看项目中某个函数的所有用法才能确定它是否可以重构。
想象一种情况,您正在执行某种 SQL 事务,但有些操作必须完成或回滚,这些操作不属于 SQL 事务的一部分。
App.OtherModuleName.init = function() {
bool elementsWereSet = false;
Transaction transaction = new Transaction(model);
try {
// Do some processing
DoSomething(model, transaction);
elementsWereSet = App.ModuleName.setElements();
DoSomethingElse(model, transaction);
} catch (Exception ex) {
transaction.rollBack();
if (elementsWereSet) {
manuallyRollBackElements();
}
}
};
请注意,如果在 setElements
返回 true
之前的任何位置抛出异常,elementsWereSet
将为 false
。
如果发生异常, bool 值将确定您是否必须手动回滚任何内容。
还有其他方法可以实现这种动态,但我会说我在一个主要软件中至少使用过一次这种模式。
关于javascript - 这里有什么理由返回 true 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42077172/