前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++核心准则​Con.1:默认情况下使对象不可修改

C++核心准则​Con.1:默认情况下使对象不可修改

作者头像
面向对象思考
发布2020-08-14 10:59:36
4070
发布2020-08-14 10:59:36
举报

秋英

Con.1: By default, make objects immutable

Con.1:默认情况下使对象不可修改

Reason(原因)

Immutable objects are easier to reason about, so make objects non-const only when there is a need to change their value. Prevents accidental or hard-to-notice change of value.

不可修改的对象更容易理解,因此只有在存在变更需求时才将对象定义为非常量。防止偶然或者不易察觉的情况下修改对象的值。

Example(示例)

代码语言:javascript
复制
for (const int i : c) cout << i << '\n';    // just reading: const

for (int i : c) cout << i << '\n';          // BAD: just reading
Exception(例外)

Function arguments are rarely mutated, but also rarely declared const. To avoid confusion and lots of false positives, don't enforce this rule for function arguments.

函数参数很少修改,但还是很少定义为常量类型。为了避免混淆和大量的误检出,不要对函数参数适用本规则。

代码语言:javascript
复制
void f(const char* const p); // pedantic
void g(const int i);        // pedantic

Note that function parameter is a local variable so changes to it are local.

注意函数参数是局部变量,因此对它的修改也是局部的。

Enforcement(实施建议)

  • Flag non-const variables that are not modified (except for parameters to avoid many false positives)
  • 标记没有发生变更的非常量变量(为了避免误检出需要将函数参数除外)

原文链接

https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#con1-by-default-make-objects-immutable

新书介绍

以下是本人3月份出版的新书,拜托多多关注!

本书利用Python 的标准GUI 工具包tkinter,通过可执行的示例对23 个设计模式逐个进行说明。这样一方面可以使读者了解真实的软件开发工作中每个设计模式的运用场景和想要解决的问题;另一方面通过对这些问题的解决过程进行说明,让读者明白在编写代码时如何判断使用设计模式的利弊,并合理运用设计模式。

对设计模式感兴趣而且希望随学随用的读者通过本书可以快速跨越从理解到运用的门槛;希望学习Python GUI 编程的读者可以将本书中的示例作为设计和开发的参考;使用Python 语言进行图像分析、数据处理工作的读者可以直接以本书中的示例为基础,迅速构建自己的系统架构。


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

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 秋英
  • Con.1: By default, make objects immutable
  • Reason(原因)
    • Exception(例外)
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档