许多程序设计文章,包括某些教材,都反对goto语句的滥用,甚至强调不用goto语句。
问题在于对于某些程序逻辑,一些初学者找不到更好的替代方法,下面给出两个常用技巧以解决这个问题。
1。利用do...while(0)语句
对于较深的if_then嵌套,当某个条件满足时,需要跳出整体判断逻辑,此时取代goto的就是break,例如:
do
if cond1 then
if cond2 then
break;//
else
do_other
endif
else if
break;//
else
dothing
endif
while(0)
...
看似没有意义的语句,确发挥了意料之外的作用,此方法适用于大部分语言。
一些开放源代码项目,如果是c语言代码,多采用此策略。
2。利用异常机制
显然这个方法需要语言具有异常机制,对于一个较长的程序段,加上内部逻辑嵌套较为繁杂,如果采用抛异常的方法,既可以轻松转向,又可以捕获相应的程序状态,下面是一段c++事例代码:
{
class do_failed{};//在这个类中可以定义相应的提示信息
try{
res=dofun1();
if(res)
{
throw do_failed(res);
}
res=dofun2();
if(res)
{
throw ftp_failed(res);
}
if(dofun3())
{
throw ftp_failed();
}
dofun();
return true;
}catch(...)
{
do_failed.msg();
return false;
}
}
利用异常机制应该算是比较完善的解决方案。从以上两个例子,也可以体会到策略和机制的区别。
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
其他文章: