正在阅读:《编程高手箴言》读后(4)《编程高手箴言》读后(4)

2004-04-08 14:39 出处:CSDN 作者:seacloud 责任编辑:sdq

  注:这一部分涉及《箴言》第四章。

  需要指出,同一个方向的goto会有很大的益处。
=========================================
  我用索引工具在linux kernel 2.2.x里稍微搜索了一下,呵呵,太多goto了,以致检索工具只给了我1000个。我想,既然有人主张彻底取缔goto,这大概可以说明人们可以证明完全可以用结构化程序设计的几个条件语句来取代goto。然而,“高手”们写程序不会因为很多人对goto的诟病而抛弃不用,他们关心的是如何写出高效清晰的代码来。事实上,在有些场合用goto反而让程序清楚的多。举个例子,Linux/BSD kernel在从下层收到一个IP包后,会对这个包的合法性作个检查。要知道,IP包的包头还是有不少域的,所以检查的代码就是重复这个过程:取处一个域,效验,合法则往下走,不合法就清理现场然后退出。这段代码看起来象这样:
  // Sanity check
  getField_1();
  checkField_1();
  if (failed)
  goto abortPoint;

  getField_2();
  checkField_2();
  if (failed)
   goto abortPoint;
  ... ...
  getField_n();
  checkField_n();
  if (failed)
  goto abortPoint;

  return success;

  abortPoint:
     doClean()
  return error;

  大家看看,这种用goto的代码是不是反而清晰的很呢?如果要用那些if/switch之类的,反而不美了,呵呵。

察看评论详细内容 我要发表评论
作者笔名简短内容 发表时间
:

键盘也能翻页,试试“← →”键

相关文章

关注我们

最新资讯离线随时看 聊天吐槽赢奖品