成都网站建设设计

将想法与焦点和您一起共享

C++怎么压缩作用域

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

武强ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联建站的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:13518219792(备注:SSL证书合作)期待与您的合作!

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(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++怎么压缩作用域”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


本文标题:C++怎么压缩作用域
网页路径:http://chengdu.cdxwcx.cn/article/igdjip.html