"abuse" 循环作为 goto 是常见的做法吗
Is it common practice to "abuse" loops as goto
如果代码中有很多 if 子句并且代码的执行对先前的错误不敏感,是否可以为此使用单周期循环?仅仅是为了能够休息一下离开街区吗?
像这样:
do {
//..code
if (error1) break;
//..code
if (errorN) break;
//do finally something when no errors before
} while (false);
是的,这是避免深度嵌套的常用技术,实际上比 goto;
更可取。
从可读性的角度来看,它比 goto
语句更好。循环的作用域和代码流定义明确,不需要查找goto
语句对应的标签,下面不一定出现。
是的,这是惯用的,即使它可能不是 do
while
循环的预期用途。 linux 内核的源代码利用了这一点。
没有什么不清楚的:while(false)
完全按照罐头上所说的去做。
如果代码中有很多 if 子句并且代码的执行对先前的错误不敏感,是否可以为此使用单周期循环?仅仅是为了能够休息一下离开街区吗? 像这样:
do {
//..code
if (error1) break;
//..code
if (errorN) break;
//do finally something when no errors before
} while (false);
是的,这是避免深度嵌套的常用技术,实际上比 goto;
更可取。
从可读性的角度来看,它比 goto
语句更好。循环的作用域和代码流定义明确,不需要查找goto
语句对应的标签,下面不一定出现。
是的,这是惯用的,即使它可能不是 do
while
循环的预期用途。 linux 内核的源代码利用了这一点。
没有什么不清楚的:while(false)
完全按照罐头上所说的去做。