锱铢必较:编写更优雅的代码——java中用break语句模拟go
2018-03-24 本文已影响278人
大神带我来搬砖
有一次遇到一个问题,需要按各种条件初始化一些不同类型的变量。
a = 0
b = "bar"
c = true
计算条件1
if (条件1){
a = 1
}else{
计算条件2
if (条件2){
b = "foo"
}else{
计算条件3
if (条件3){
c = false
}
}
}
现在代码看上去嵌套层数很多,不美观。
其实可以用return (a,b,c)的方式直接终止,但是java里没有返回tuple的能力,需要引入其他类库;要不就要返回一个object类型的数组,也觉得不美观。
后来发现了java break的新用法,根据https://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html,java的break语句不仅可以跳出循环,还可以中止label标记的代码块。
可以利用label对代码块block进行标记,然后用break中止,这下嵌套少了很多,妈妈再也不用担心写出不优雅的代码啦!!
a = 0
b = "bar"
c = true
init:{
计算条件1
if (条件1){
a = 1
break init;
}
计算条件2
if (条件2){
b = "bar"
break init;
}
计算条件3
if (条件3){
c = true
break init;
}
}