goto语句在C/C++语言中可以实现一部分流程的跳转,但在实际开发中却很少用到,为什么呢?下面我们从以下几个方面来详细阐述。
使用goto语句容易造成代码逻辑混乱,代码结构难以理解,特别是当跳转目标较远时,可读性更加差。
而使用循环语句、条件分支语句等其它结构化代码,能够更清晰、直观地表示流程逻辑。
使用goto语句,代码执行顺序的跳转将会增加程序的复杂度。这样,在程序出现问题时,需要分析执行的流程,才能找到出错的地方。
但如果使用结构化代码,程序的执行流程会更加清晰,出错的地方也会更加容易定位。
当代码量较大时,使用goto语句容易造成代码的混乱,使得维护代码变得困难。
相反,使用结构化代码,代码的维护性更强,易于维护,也更容易让团队中的其它成员理解和维护代码。
在运用goto语句时,容易造成“悬挂else”问题。如下面这段代码:
if(condition1)
goto label1;
else
if(condition2)
{
...
}
label1:
...
在这段代码中,如果condition2不成立,代码将跳到label1处,那么else语句中的代码将永远不会被执行,这就是“悬挂else”的问题。
而使用结构化代码,则能够避免这种问题的发生。