1

我给你看两个例子:

示例 A:

protected void mostrarCms(int idCms) {
    LinearLayout variableContent = (LinearLayout) this.findViewById(R.id.variableContent);

    loopDeCms:
    for (int i=0; i<variableContent.getChildCount();i++){
        View fillActual = variableContent.getChildAt(i);
        if (fillActual instanceof WebView){
            WebView wbActual = (WebView) fillActual;
            if (wbActual.getContentDescription().toString().equals("cms_id_"+idCms)){
                wbActual.setVisibility(View.VISIBLE);
                break loopDeCms;
            } 
        }
    } 
}

示例 B:

protected void mostrarCms(int idCms) {
    LinearLayout variableContent = (LinearLayout) productView.this.findViewById(R.id.variableContent);

    for (int i=0; i<variableContent.getChildCount();i++){
        View fillActual = variableContent.getChildAt(i);
        if (fillActual instanceof WebView){
            WebView wbActual = (WebView) fillActual;
            if (wbActual.getContentDescription().toString().equals("cms_id_"+idCms)){
                wbActual.setVisibility(View.VISIBLE);
                return;
            } 
        }
    } 
}

这两个推荐哪一个?请注意,此代码来自 Android,因此是否使用/释放资源实际上很重要。

4

4 回答 4

3

如果您想退出该功能,那么return是最好的选择。

break仅将您带出直接循环,因此如果将来的更改意味着您的循环嵌套在另一个循环中,您的控制流可能会中断。始终尽可能多地证明您的代码。

于 2013-10-14T09:34:00.880 回答
2

由于该方法在循环之后不执行任何其他操作(也不应该),因此 usingreturn是更清洁的选项。使用break意味着处理将在循环之后继续。

于 2013-10-14T09:30:59.400 回答
1

在这种特定情况下,这无关紧要。我想这是风格问题。如果在 for 循环之后添加新代码,我会使用break它,只有循环会结束,而不是整个方法。

考虑将扩展此代码并在for循环后添加一些功能的编码器。如果您使用该return语句,编码人员将不得不浪费时间来确定该方法是否必须返回,或者您只是break出于风格原因更喜欢它。如果您使用未来的编码器(可能是您),在循环break之后添加逻辑会更轻松。for这就是为什么我更喜欢break而不是return

性能方面没有任何区别,原因有两个:

  1. 这里可能没有性能问题,因为这非常小。
  2. 即使存在性能问题 - 编译器也可能知道如何优化。

资源方面也无关紧要,因为无论哪种方式,方法的范围都会完成,并且当资源超出范围时,允许对资源进行垃圾收集。

于 2013-10-14T09:29:24.880 回答
0

I think it is just personal favor. I personally try to avoid return statements anywhere not near the end of a function. If you want to add code to this function or extend the functionality a return in the head of the function could give you a lot headache.

于 2013-10-14T09:34:14.663 回答