前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++核心准则ES.26: 不要将一个变量用于两个无关的用途

C++核心准则ES.26: 不要将一个变量用于两个无关的用途

作者头像
面向对象思考
发布2020-05-06 18:27:17
3220
发布2020-05-06 18:27:17
举报

ES.26: Don't use a variable for two unrelated purposes

ES.26: 不要将一个变量用于两个无关的用途

Reason(原因)

Readability and safety.

可读性和安全性。

Example, bad(反面示例)

代码语言:javascript
复制
void use()
{
    int i;
    for (i = 0; i < 20; ++i) { /* ... */ }
    for (i = 0; i < 200; ++i) { /* ... */ } // bad: i recycled
}
Note(注意)

As an optimization, you may want to reuse a buffer as a scratch pad, but even then prefer to limit the variable's scope as much as possible and be careful not to cause bugs from data left in a recycled buffer as this is a common source of security bugs.

作为一种优化,你可能将buffer用作告诉暂存区,即使是这种用情况最好还是尽可能限定变量的作用域,而且注意不要因为留在循环使用的buffer中的数据引发错误。这是安全错误的一个常见来源。

代码语言:javascript
复制
void write_to_file() {
    std::string buffer;             // to avoid reallocations on every loop iteration
    for (auto& o : objects)
    {
        // First part of the work.
        generate_first_string(buffer, o);
        write_to_file(buffer);

        // Second part of the work.
        generate_second_string(buffer, o);
        write_to_file(buffer);

        // etc...
    }
}
Enforcement(实施建议)

Flag recycled variables.

标记循环使用的变量。

原文链接

https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#es26-dont-use-a-variable-for-two-unrelated-purposes

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 面向对象思考 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ES.26: Don't use a variable for two unrelated purposes
  • Reason(原因)
    • Note(注意)
      • Enforcement(实施建议)
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档