有什么理由在这里回复吗?

时间:2017-02-06 21:00:14

标签: javascript jquery

所以这种类型的结构出现在我项目的大多数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;
}

2 个答案:

答案 0 :(得分:1)

在您详细说明的情况下,没有理由返回true。我怀疑这只是您用来开发代码的承包商的编码惯例。可能他们的做法是能够验证呼叫是否成功,而对于更复杂的呼叫,这不是一个坏主意。

答案 1 :(得分:1)

根据提供的代码,没有必要。鉴于上下文,您的代码版本是清晰的。

但是你必须在项目中看到函数的所有用法,以确定它是否可以重构。

想象一下您正在进行某种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

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

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