温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C++怎么压缩作用域

发布时间:2021-11-26 14:53:09 阅读:144 作者:iii 栏目:大数据
C++开发者专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

本篇内容主要讲解“C++怎么压缩作用域”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++怎么压缩作用域”吧!

ES.5: 尽量压缩作用域

Reason(原因)

可读性。最小化资源的保持时间。避免变量的误用。

换个说法:不要没有必要扩大名称的作用域。

Example(示例)

void use(){    int i;    // bad: i is needlessly accessible after loop    for (i = 0; i < 20; ++i) { /* ... */ }    // no intended use of i here    for (int i = 0; i < 20; ++i) { /* ... */ }  // good: i is local to for-loop    if (auto pc = dynamic_cast<Circle*>(ps)) {  // good: pc is local to if-statement        // ... deal with Circle ...    }    else {        // ... handle error ...    }}
Example, bad(反面示例)
void use(const string& name){    string fn = name + ".txt";    ifstream is {fn};    Record r;    is >> r;    // ... 200 lines of code without intended use of fn or is ...}

这个函数用任何标准衡量都太长了,但是要点在于fn使用的资源和is管理的文件被维持的时间远远超过需要,有可能在函数接下来的部分is和fn会被意外使用。这种情况下,分解出一个read函数可能是一个好主意。

Record load_record(const string& name){    string fn = name + ".txt";    ifstream is {fn};    Record r;    is >> r;    return r;}void use(const string& name){    Record r = load_record(name);    // ... 200 lines of code ...}
Enforcement(实施建议)
  • Flag loop variable declared outside a loop and not used after the loop

  • 标记在循环外定义循环变量并且循环之后不再使用的情况。

  • Flag when expensive resources, such as file handles and locks are not used for N-lines (for some suitable N)

  • 标记高价值资源(例如文件句柄和锁)在N行(适当值)之内没有使用的情况。

到此,相信大家对“C++怎么压缩作用域”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

原文链接:https://my.oschina.net/u/4579737/blog/4354545

c++
AI

开发者交流群×