我向您展示了两个例子:
示例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,因此使用/释放或不释放资源,实际上很重要。
答案 0 :(得分:3)
如果您想退出该功能,那么return
是最好的选择。
break
只会让您退出直接循环,因此如果将来的更改意味着您的循环嵌套在另一个循环中,您的控制流可能会中断。始终能够尽可能地证明您的代码。
答案 1 :(得分:2)
由于该方法在循环之后不执行任何其他操作(并且不应该),因此使用return
是更清晰的选项。使用break
意味着处理将在循环后继续。
答案 2 :(得分:1)
在这种特殊情况下,它并不重要。我想那是一种风格问题。我会使用break
所以如果在for循环之后添加新代码,则循环将结束,而不是整个方法。
考虑将扩展此代码并在for
循环后添加一些功能的编码器。如果您使用return
语句,编码器将不得不浪费时间来确定方法是否必须返回,或者出于样式原因您只是优先选择break
。如果您使用break
未来的编码器(可能是您)将更加轻松地在for
循环后添加逻辑。这就是为什么我更喜欢break
而不是return
。
性能方面,由于两个原因,它没有任何区别:
它在资源方面也不重要,因为无论哪种方式,方法的范围都会完成,并且当资源超出范围时,允许对资源进行垃圾收集。
答案 3 :(得分:0)
我认为这只是个人的好感。我个人试图避免在函数结尾附近的任何地方返回语句。如果你想为这个函数添加代码或扩展功能,函数头部的返回可能会让你头疼。