温馨提示×

温馨提示×

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

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

C++中怎么表达意图

发布时间:2021-11-29 11:54:47 来源:亿速云 阅读:97 作者:iii 栏目:大数据

本篇内容主要讲解“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<T>) interfaces f(T*, int) 接口对 f(span<T>) 接口

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

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

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

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

向AI问一下细节

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

c++
AI