因此,这种类型的结构会出现在我项目中的大多数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();
        }
    }
};


请注意,如果elementsWereSet返回false之前的任何地方引发了异常,则setElements将为true

如果发生异常,布尔值将确定您是否必须手动回滚任何内容。

还有其他方法可以实现这种动态效果,但是我会说我在一个主要软件中至少使用了这种模式一次。

关于javascript - 有什么理由在这里返回true吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42077172/

10-09 20:28
查看更多