目前,我正在一个项目中大量使用goto语句。goto语句的主要目的是在例程中具有一个清理段,而不是多个return语句。如下所示:
BOOL foo()
{
BOOL bRetVal = FALSE;
int *p = NULL;
p = new int;
if (p == NULL)
{
cout<<" OOM \n";
goto Exit;
}
// Lot of code...
Exit:
if(p)
{
delete p;
p = NULL;
}
return bRetVal;
}
这使工作变得更加容易,因为我们可以在代码的一个部分(即在“退出”标签之后)跟踪清理代码。
但是,我读过很多地方,使用goto语句是不好的做法。
目前,我正在阅读《代码完成》一书,它说我们需要使用靠近其声明的变量。如果使用goto,则需要在首次使用goto之前声明/初始化所有变量,否则编译器会给出错误消息,表明goto语句跳过了xx变量的初始化。
哪种方法正确?
从斯科特的评论:
似乎使用goto从一个部分跳转到另一部分是不好的,因为这会使代码难以阅读和理解。
但是,如果我们仅使用goto前进并指向一个标签,则应该很好(?)。
江户川乱折腾
红糖糍粑
如何在Javascript中使用goto?
如果 使用 是否可行
goto 语句标号;
goto可以直接用输出语句吗
相关分类