ES.70: Prefer a switch-statement to an if-statement when there is a choice

ES.70:进行选择时,switch语句比if语句好

Reason(原因)

  • Readability.
  • 可读性
  • Efficiency: A switch compares against constants and is usually better optimized than a series of tests in an if-then-else chain.
  • 效率:switch语句执行的时常数比较运算,相比一系列if-then-else语句,通常可以更好地被优化。
  • A switch enables some heuristic consistency checking. For example, have all values of an enum been covered? If not, is there a default?
  • switch语句允许某些启发式检查。例如枚举类型的所有值是否都被覆盖到了?如果没有,是否设置的default选项?

Example(示例)

void use(int n){    switch (n) {   // good    case 0:        // ...        break;    case 7:        // ...        break;    default:        // ...        break;    }}

rather than(而不是):

void use2(int n){    if (n == 0)   // bad: if-then-else chain comparing against a set of constants        // ...    else if (n == 7)        // ...}

Enforcement(实施建议)

Flag if-then-else chains that check against constants (only).

标记和常数值进行比较的if-then-else判断链(只限于这种情况)

原文链接

https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#es70-prefer-a-switch-statement-to-an-if-statement-when-there-is-a-choice


觉得本文有帮助?请分享给更多人。

关注微信公众号【面向对象思考】轻松学习每一天!

面向对象开发,面向对象思考!

switch语句嵌套if_C++核心准则ES.70:进行选择时,switch语句比if语句好相关推荐

  1. C++核心准则ES.40:避免复杂的表达式

    ES.40: Avoid complicated expressions ES.40:避免复杂的表达式 Reason(原因) Complicated expressions are error-pro ...

  2. C++核心准则ES.30: 不要使用宏进行程序中的文本操作​

    ES.30: Don't use macros for program text manipulation ES.30: 不要使用宏进行程序中的文本操作 Reason(原因) Macros are a ...

  3. C++核心准则ES.56​:只在需要将一个对象显式移动到另外的作用域时使用std::move​

    ES.56: Write std::move() only when you need to explicitly move an object to another scope ES.56:只在需要 ...

  4. 无符号数的减法_C++核心准则ES.107:不要使用无符号数下标,使用gsl::index更好

    ES.107: Don't use unsigned for subscripts, prefer gsl::index ES.107:不要使用无符号数下标,使用gsl::index更好 Reason ...

  5. c语言switch语句嵌套,浅谈c语言中switch语句的嵌套使用

    switch语句是一种分支控制语句,它的应用在程序设计中起到了很重要的作用.由于其格式复杂,对于初学者来说很难掌握,switch语句的嵌套使用更是让初学者难以理解.本文通过介绍switch嵌套语句的形 ...

  6. pq 中m函数判断嵌套_matlab中M文件if语句嵌套问题

    匿名用户 1级 2014-05-02 回答 在MATLAB中,选择结构可由两种语句来实现. (1) if语句 if语句的最简单用法为: if 表达式: 程序模块: end if语句的另一种用法为: i ...

  7. java 嵌套if优化_Java 如何优化if语句嵌套

    我们平时写if,switch或for语句是常有的事儿,也一定写过多层if或for语句嵌套的情况,如果代码里的嵌套超过3层,阅读起来就会非常困难了.我们应该尽量避免代码嵌套多层,最好不要超过2层. if ...

  8. R语言嵌套的ifelse语距:将一条If语句放在另一条If语句中,该语句作为嵌套的If else调用。If else语句允许我们根据表达式结果(TRUE或FALSE)打印不同的语句,执行不同的语句块

    R语言嵌套的ifelse语句:将一条If语句放在另一条If语句中,该语句作为嵌套的If else调用.If else语句允许我们根据表达式结果(TRUE或FALSE)打印不同的语句,执行不同的语句块 ...

  9. php 语法 条件变量,C ++核心准则:注意条件变量的陷阱

    今天,我写了一篇关于条件变量的恐怖文章.您应该意识到条件变量的这一问题.C ++核心准则CP 42仅声明:"不要无条件等待". 等待!条件变量支持一个非常简单的概念.一个线程准备一 ...

最新文章

  1. 如何快速实现HTML编辑器.NET组件
  2. csvtk:高效命令行版极简dplyr
  3. nagios监控远程端口
  4. 判断数据是否服从某一分布(二)——简单易用fitdistrplus包
  5. Board Moves CodeForces - 1353C(数学)
  6. JavaOne 2012:JavaOne技术主题演讲
  7. Java DOM方式解析XML(模板)
  8. [Android5 系列二] 1. 全实例之控件(Widget)
  9. centos php71,CentOS 71编译安装PHP7
  10. cad常青藤插件_CAD作图效率低怎么办?最全辅助插件大合集,绘图效率提升70%,限时分享...
  11. 苹果CMS V10 播放记录_苹果cms采集后无法播放怎么解决?
  12. mysql查询一张表中一共有多少条数据
  13. 虚拟机镜像文件高速下载方法之一
  14. 二十九、非谓语动词_作定语
  15. [02/Dec/2019:12:59:10 +0800]之日期转换
  16. cad2010怎么隐藏标注尺寸,cad2007怎么隐藏标注尺寸
  17. mac的python换字体_Python -mac-画图及设置坐标中文字体
  18. UnityHub 下载unity 卡在最后不动,已解决
  19. 退出cmd.exe或退出批处理文件
  20. 【每日一题】宝石与石头

热门文章

  1. HDU4321(位运算二进制1的统计)
  2. UNIX 动态库和静态库
  3. 秒杀多线程第十四篇 读者写者问题继 读写锁SRWLock
  4. WinDbg学习笔记(二)--字符串访问断点
  5. virtualbox+vagrant安装虚拟机
  6. Visual Studio Code,这是要上天?
  7. 使用VMware VSphere WebService SDK进行开发 (三)——获取主机(HostSystem)的基本信息
  8. 通过视频着色进行自监督跟踪
  9. 【线上分享】快直播—超低延迟直播技术方案及应用
  10. Nebula:Slack 的覆盖全球性的开源网络