千家信息网

C++中怎么表达意图

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,本篇内容主要讲解"C++中怎么表达意图",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C++中怎么表达意图"吧!P.3: Express intent(表达
千家信息网最后更新 2025年12月02日C++中怎么表达意图

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

P.3: Express intent(表达意图)

Reason(原因)

只要代码不是意图的直接陈述(例如在名称或者注释中),就可能存在实际行为和意图不一致的情况。

Example(示例)
gsl::index i = 0;while (i < v.size()) {    // ... do something with v[i] ...}

恰好循环通过v的每个元素的意图没有被表达。index的实现细节被暴露出来(因此它可能被误用),而且i的有效范围要超过循环的范围,这一点可能是有意的,也可能是无意的。读者无法只通过这段代码了解这些。

Better(较好):

for (const auto& x : v) { /* do something with the value of x */ }

现在,这里没有清楚地提示迭代机制和作用在const元素的循环操作符,因此也就不会发生意外的修改。如果需要修改,就这么写:

for (auto& x : v) { /* modify x */ }

有时作为更好的选择,可以使用一个命名算法。这个例子中使用Ranges TS中的for_each是因为它可以直接表达意图。

for_each(v, [](int x) { /* do something with the value of x */ });
for_each(par, v, [](int x) { /* do something with the value of x */ });

最后一个变形更加清楚的表明了我们并不关心v中元素被处理的次序。

程序员应该熟悉

  • The guidelines support library 支持库指南

  • The ISO C++ Standard Library ISO C++标准库

  • Whatever foundation libraries are used for the current project(s)目前项目中使用的任何基本库。

译者注:选择最能表明意图的写法的前提条件是你首先得有的选。这就需要熟悉所使用的语言,各种库的功能。
Note(注意)

换一个表达:表明要做什么而不是怎么做。

Note(注意)

某些语言比其他语言更善于表达意图。

Example(示例)

如果两个整数值表示2维平面中的一个点的坐标,那么可以说:

draw_line(int, int, int, int);  // obscure难以理解的draw_line(Point, Point);        // clearer清晰的
Enforcement(实施建议)

寻找那些具有更好选择的常见样式。

  • simple for loops vs. range-for loops 对于循环来讲,比较简单的for循环和range

  • f(T*, int) interfaces vs. f(span) interfaces f(T*, int) 接口对 f(span) 接口

  • loop variables in too large a scope(很大范围中使用的循环变量)

  • naked new and delete 直接的new和delete操作

  • functions with many parameters of built-in types 包含很多内置类型参数的函数

到此,相信大家对"C++中怎么表达意图"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

意图 循环 C++ 元素 范围 语言 选择 清楚 代码 内容 实际 接口 示例 学习 很大 更深 有效 一致 意外 两个 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 web数据库页面乱码问题 什么是网络安全社区 服务器怎么查看硬盘sn 苹果的网络安全工程师 更改svn服务器地址 皖西学院网络安全与信息化 网络技术类的单招学校 工业互联网的网络技术ppt 无锡品牌软件开发优势 击剑视频软件开发 网络安全属于新媒体吗 石景山区现代软件开发推荐咨询 敏捷开发在软件开发中的地位 定制软件开发利润多少比较合理 一个数据库文件中可以有几个报表 交换机网络安全设置 网络安全意识形态对照检查 新乡乐昂网络技术有限公司 数据库工程师备战方法 根据sql文件创建数据库 jquery展示数据库个人信息 中国网络安全法律英语 无线城域网络技术特点 计算机网络安全保障论文 罗布乐思如何弄服务器 怎么架设网页服务器 幼儿园网络安全指导 数据库系统及应用第九版所有答案 广东欢太互联网网络科技公司 2021长三角网络安全
0