java – else语句是否会降低编译时间/运行速度? (在可以避免的情况下)

在无数(好的,可数的,但很多)场合,特别是在类的方法/函数中,我一直处于我想在void-return函数中执行一组操作的情况,但仅限于(条件)满足).在大多数情况下,我可以看到(假设代码工作)如何通过简单地返回if块来完全删除else语句.

这是一个具体的例子,如果没有意义:

用else语句(教师如何展示)

    private void ifThisDoThat(params){
        if(dependenciesNotMet) return;
        else{
            ////DO STUFF HERE...
        }
    }

没有(更简约)

    private void ifThisDoThat(params){
        if(dependenciesNotMet) return;
        //Assuming the above does not execute, DO STUFF HERE...
    }

我认为删除else语句,如果完全优化,将被归类为微优化,但仍然认为我会要求我自己的启发.

结束时:

使用return来删除else块有什么好处吗?

如果我使用else语句,编译器是否会做额外的工作?

是否有理由始终使用else(如果出现错误或其他原因)?

最佳答案
这是错误的优化.编译器实际上可能需要更长的时间来编译,从中间返回,并且任何优化编译器将为两个表单生成基本相同的可执行代码.

在风格方面,有时一种风格是好的,有时是另一种风格.返回立即风格的危险是:

>如果方法底部有任何常见的完成/清理逻辑,则会遗漏.在大型方法中,很容易忘记逻辑存在,并且在大型方法中将这种逻辑编辑成以前没有的方法是相当容易的.这种错误很难找到.
>因为它基本上消除了在方法底部使用“清理”逻辑的选项,它可能导致个体中的逻辑增加,如果是腿,比标准if / then / else更加混乱.
>这与良好的“结构化编程”实践背道而驰.

也就是说,有些情况下,从中间返回的风格是更好的选择:

>有多个连续if语句的情况,每个语句都有一个简单的主体,每个语句都能以return结尾.
>一个非常简短的方法,其中“快速退出”是自然而且相当明显的.
>“快速退出”的情况(例如,因为某些数据项为零)非常接近较长方法的顶部.

转载注明原文:java – else语句是否会降低编译时间/运行速度? (在可以避免的情况下) - 代码日志