专栏首页C++核心准则原文翻译C++核心准则ES.70:进行选择时,switch语句比if语句好

C++核心准则ES.70:进行选择时,switch语句比if语句好

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


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

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

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

本文分享自微信公众号 - 面向对象思考(OOThinkingDalian),作者:面向对象思考

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-05-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • C++核心准则ES.43: 避免在表达式中使用无定义的运算次序

    You have no idea what such code does. Portability. Even if it does something sen...

    面向对象思考
  • C++核心准则CP.50:将mutex和被保护数据一起定义,如果可能使用 synchronized_value<T>

    It should be obvious to a reader that the data is to be guarded and how. This de...

    面向对象思考
  • C++核心准则E.17:不要试图在所有函数中捕捉所有异常

    E.17: Don't try to catch every exception in every function

    面向对象思考
  • Freemarker常用方法

    剑行者
  • 性能环境之docker操作指南5(全网最全)

    $ mkdir webserver $ cd webserver $ vi Dockerfile

    高楼Zee
  • 【Python】解析Python中的条件

    当len(strString)>6为真时,索引值为1,也就返回True。当len(strString)>6为假时,索引值为0,也就返回False。

    py3study
  • python笔记3

    检测当前元素中是否存在bwm,如果存在就全部大写打印bwm,如果没有则首字母大写打印所有字母.

    blankmiss
  • 周末小贴士之“什么是语法糖”?有啥意义?

    前端开发是一个细节分支特别多的行业,如果用一个水果来比喻的话,我觉得“红毛丹”特别形像,就是这个东西, ? 你看它外面的细毛很多,但没有哪一根毛可以单独支撑起它...

    web前端教室
  • Java_脚本引擎_01_用法入门

    最近有个需求,需要在js中调用java,这样能避免更新java,从而实现代码的热更新。

    shirayner
  • 【SmartOS】轻量级多任务调度系统

    SmartOS是一个完全由新生命团队设计的嵌入式操作系统,主要应用于智能家居、物联网、工业自动化控制等领域。 ARM Cortex-M系列微处理器几乎全都做成...

    大石头

扫码关注云+社区

领取腾讯云代金券