《代码大全2》第15章 使用条件语句

目录

前言

15.1 if语句

15.2 case语句

15.2.1 为 case 选择最有效的排列顺序

15.2.2 使用case语句的诀窍


《Code_Complete_2》持续更新中......_@来杯咖啡的博客-CSDN博客这本书有意设计成使你既可以从头到尾阅读,也可以按主题阅读。1. 如果你想从头到尾阅读,那么你可以直接从第2章“用隐喻来更充分地理解软件开发”开始钻研。2. 如果你想学习特定的编程技巧,那么你可以从第6章“可以工作的类”开始,然后根据交叉引用的提示去寻找你感兴趣的主题。3. 如果你不确定哪种阅读方式更适合你,那么你可以从第3章3.2节“辦明你所从事的软件的类型”开始。.....................https://blog.csdn.net/qq_43783527/article/details/126275083

前言

        条件语句用来控制其他语句是否执行;其他语句在 if、else、 case、 switch 等语句里时变为“有条件”执行。尽管从逻辑上说,把 while、 for 等循环控制符看做条件语句也是合理的,但传统上还是把它们分别对待。第16章“控制循环”会仔细研究 while 和 for 语句。

15.1 if语句

        首先写正常代码路径,再处理不常见情况。 在编写代码时,要使得正常情况的执行路径在代码中是清晰的。确认那些不常见的情况不会遮掩正常的执行路径。这对可读性和代码性能来说都很重要。

        利用布尔函数调用简化复杂的检测。 为了提高可读性,你可以把复杂的判定条件替换成布尔函数调用。下面就是使用布尔函数取代判断后的代码示例:

15.2 case语句

15.2.1 为 case 选择最有效的排列顺序

        你可以有很多方式来组织 case 语句中的各种情况 (cases)。如果你有一个小小的 case 语句,其中只有3个选项和3行相对应的代码,那么顺序的选择就不那么重要了。如果你的 case 语句很长——例如,一条用于处理事件驱动程序里面的数十个事件的 case 语句—那么顺序就很重要了。下面是一些可能的排列顺序:

        1、按字母顺序或按数字顺序排列各种情况。 如果所有情况的重要性都相同,那么就把它们按 A-B-C 的顺序加以排列,以便提高可读性。这样做很容易从中找出某个特定的情况来。
        2、把正常的情况放在前面。 如果有一个正常的情况和多个异常情况,那么就把那个正常的情况放在最前面。用注释来说明它是正常情况,而其他的属于非正常情况。
        3、按执行频率排列 case 子句。 把最经常执行的情况放在最前面,最不常执行的放在最后。这样做有两个方面的好处。首先,阅读程序的人可以很容易地找到最常见的情况。那些检索情况列表,找出某个具体情况的读者很可能会对最常见的情况感兴趣,而把常见的情况放在代码的上部会加速这种检索。

15.2.2 使用case语句的诀窍

        下面是使用 case 语句的几点提示。

        简化每种情况对应的操作。 使得与每种情况相关的代码短小精悍。简短的情况处理代码会使 case 语句的结构更加清晰。如果某种情况执行的操作非常复杂,那么就写一个子程序,并在该情况对应的 case 子句中调用它,而不要把代码本身放进这一 case 子句里。

        不要为了使用 case 语句而刻意制造一个变量。 case 语句应该用于处理简单的、容易分类的数据。如果你的数据并不简单,那么就使用 i-then-else 语句串。为使用 case 而刻意构造出;的交量很容易把人搞糊涂,你应该避免使用这种变量。例如,不要这么做:

这里控制 case 语句的变量是 action。在本例中,action 是通过截取usercommand 字符串——一个用户输入的字符串——的第一个字符创建的。这种捣乱的代码很容易带来问题。一般而言,当你为了用 case 语句而刻意去你可造出一个变量时,真正的数据可能不会按照你所希望的方式映射到 case 语句里。 

        与其刻意制造一个本不适用于 case 的假冒变量(phony variable),不如使用一个 if-then-else-if 检测串来检查整个字符串。以下是改写后的代码:

         把 default 子句只用于检查真正的默认情况。 也许有时候你只剩下了一种情况需要处理,于是就决定把这种情况编写为 default 子句(默认子句)。尽管这么做有时候很诱人,但却是很不明智的。你将失去 case 语句的标号(label) 所提供的自动说明功能,而且也丧失了使用 default 子句检测错误的能力

        利用 default 子句来检测错误。 如果一条 case 语句中的默认子句既没有用来做其他的处理,按照正常执行顺序也不太可能会发生,那么就向里面加入一条诊断消息:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@来杯咖啡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值