Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有什么理由在这里返回true吗?_Javascript_Jquery - Fatal编程技术网

Javascript 有什么理由在这里返回true吗?

Javascript 有什么理由在这里返回true吗?,javascript,jquery,Javascript,Jquery,因此,这种类型的结构出现在我项目中的大多数javascript文件中。我的问题是,有没有理由在setElements之后返回true并在“if”语句中调用它,比如: App.ModuleName.setElements = function() { App.ModuleName.el = { title: $("#title") } return true; }; App.ModuleName.init = function() { if (A

因此,这种类型的结构出现在我项目中的大多数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
        }
    }
};
与删除返回值true并仅执行以下操作相反:

if (App.Common.checkDependency('ModuleName')) {
    App.ModuleName.setElements();
    //do something;
}

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

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

根据提供的代码,这是不必要的。在这种情况下,您的代码版本更清晰

但是,您确实必须查看项目中函数的所有用法,以确定它是否可以重构

假设您正在执行某种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
setElements
返回
true
时,如果在任何位置引发异常,则
elementsWereSet
将为
false

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


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

根据提供的代码,这是没有必要的。在这种情况下,您的代码版本更清晰

但是,您确实必须查看项目中函数的所有用法,以确定它是否可以重构

假设您正在执行某种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
setElements
返回
true
时,如果在任何位置引发异常,则
elementsWereSet
将为
false

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


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

在这种情况下没有,但可能有我们看不到的原因。模块中的其他方法是否返回错误、抛出错误、返回错误代码、出错时返回false等?由于政策或历史原因,这里可能只是为了实现方法之间的奇偶性。@JoeFrambach不是真的,不是,也许这是最初的意图。它是由顾问在项目开始时编写的。他们可能已经按代码行支付了成功的代码测试可以在
setElements
方法之前编写,并且假定
setElement
可能需要测试错误。在这种情况下不是这样,但可能有我们看不到的原因。是否还有其他原因模块中的方法返回错误、抛出错误、返回错误代码、出错时返回false等?由于政策或历史原因,这里可能只是为了实现方法之间的奇偶性。@JoeFrambach不是真的,不是,也许这是最初的意图。它是由顾问在项目开始时编写的。他们可能已经按照每行代码付费。成功的代码测试可能在
setElements
方法之前编写,并且假定
setElement
可能需要测试错误。