记得在那里看过说一个函数最好只有一个return语句
有什么不好的。有时用多个return方便很多,干嘛不用。
当然不好,多个return会使返回结果难以预期,你能保证return前的代码没有bug?
不光是java吧,所有的语言都一样,代码在运行到return时就会跳出。
如果函数中有多个判断分支,建议先将返回值存放在变量中,在最后return。
我到是比较纠结return只是用于中断函数执行时到底怎么写?
第一种:
doSomething();
return;
第二种:
return doSomething();
这里return只是为了函数不再往下执行,并不在乎return什么内容。
我用第一种方式,但第二种方式写起来顺手。我的担忧是,第二种方式是否会占用内存,是否给后来维护代码的人带来困惑?
无所谓好不好,如果你不想用多处,那就用 do while false 好了。如下:
Object ret;
L0: do {
...
if (某条件) {
ret = xxx;
break L0;
}
...
ret = YYY;
}
while (false);
return ret;
用的好可以把很深的 if else 代码拉平,逻辑变得清晰。如 这段代码 ,当然了这是我个人的习惯写法,好不好另说了,只是举例用一个 return 的一种方式。
不过一般我推荐我的小组成员尽可能块的结束掉函数体,优先处理错误、简单逻辑,尽可能快速的 return,throw,让代码层级平一些,逻辑清楚些。当然了,得根据实际情况来判断用是不是真的适合这种方式,也有时候不是这样。
return是为了让函数跳出,或者在特定的地方返回特定的值,使用很普遍啊。不需要这么教条吧?
举个例子:
有个String method(int id, String name){};
这里是个查询控制跳转视图的method.条件有以下几个点
id>0跳转到A视图
id>0后判断,如果name=b跳转到B视图
默认跳转到C视图
那么一般情况下代码会这么写:
String redirect = "/view/c";
if(id > 0){
redirect = "/view/a"
if(Utils.isNotEmpty(name) && name.equals('b')){
redirect = "/view/b";
}
}
return redirect;
以上面代码为栗子,可以改成这样
if(id > 0){
if(Utils.isNotEmpty(name) && name.equals('b')){
return "/view/b";
}
return "/view/a";
}
return "/view/c";
这样的话,减少了变量,变量是很容易出各种各样的问题的,最大的问题是容易把值弄丢。
以上就是我的看法。