AdaMaYun 发表于 2024-7-30 11:11

容易被忽略的break关键字

1) 不能漏加的break

switch…case语句可以很方便的实现多分支结构,但要注意在合适的位置添加break关键字。程序员往往容易漏加break从而引起顺序执行多个case语句,这也许是C的一个缺陷之处。

对于switch…case语句,从概率论上说,绝大多数程序一次只需执行一个匹配的case语句,而每一个这样的case语句后都必须跟一个break。去复杂化大概率事件,这多少有些不合常情。

2) 不能乱加的break

break关键字用于跳出最近的那层循环语句或者switch语句,但程序员往往不够重视这一点。

1990年1月15日,AT&T电话网络位于纽约的一台交换机宕机并且重启,引起它邻近交换机瘫痪,由此及彼,一个连着一个,很快,114型交换机每六秒宕机重启一次,六万人九小时内不能打长途电话。

当时的解决方式:工程师重装了以前的软件版本。。。事后的事故调查发现,这是break关键字误用造成的。《C专家编程》提供了一个简化版的问题源码:



那个程序员希望从if语句跳出,但他却忘记了break关键字实际上跳出最近的那层循环语句或者switch语句。现在它跳出了switch语句,执行了use_modes_pointer()函数。但必要的初始化工作并未完成,为将来程序的失败埋下了伏笔。

suncat0504 发表于 2024-7-30 19:54

所以以前经常使用共通进行转移。只不过,因为不友好,慢慢被抛弃了。

suncat0504 发表于 2024-7-30 19:55

一本好的程序,要考虑合理分配功能、模块。使阅读、维护变得容易。

suncat0504 发表于 2024-7-30 19:55

做一名好的程序员,没那么简单,要花心思的。
页: [1]
查看完整版本: 容易被忽略的break关键字