温馨提示×

温馨提示×

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

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

C++怎么将有意义的操作封装为精心命名的函数

发布时间:2021-11-26 15:30:27 来源:亿速云 阅读:117 作者:iii 栏目:大数据

这篇文章主要讲解了“C++怎么将有意义的操作封装为精心命名的函数”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++怎么将有意义的操作封装为精心命名的函数”吧!

将有意义的操作封装为精心命名的函数

Reason(原因)

从复杂代码分离出可以让代码更可读,更有可能被复用,而且更少错误的通用代码。如果存在被良好定义的动作,那就从其他代码中将它们分离出来并且为之命名。

Example, don't(示例,不要这样做)

void read_and_print(istream& is)    // read and print an int{    int x;    if (is >> x)        cout << "the int is " << x << '\n';    else        cerr << "no int on input\n";}

read_and_print函数的差不多每一行都错了。它读入信息,向一个固定ostream输出,向固定ostream输出,只处理整数。没有任何代码可以复用,逻辑上独立的操作容易混淆而且局部变量的作用域还超过了使用它们的逻辑。这样一个小例子看起来还行,但是如果输入操作,输出操作和错误处理更加复杂的话,这种混乱的代码会变得更加难于理解。Note(注意)

如果你编写了一个有可能被重复使用的不平凡的lambda表达式,通过将它赋给一个变量(通常非局部)的方式给它一个名字。Example(示例)

sort(a, b, [](T x, T y) { return x.rank() < y.rank() && x.value() < y.value(); });

为拆分表达式的lambda表达式命名并提供一个关于它含义的强提示。

auto lessT = [](T x, T y) { return x.rank() < y.rank() && x.value() < y.value(); };
sort(a, b, lessT);find_if(a, b, lessT);

最短的代码并不一定意味着最好的性能和维护性。

Exception(例外)

循环体,包含lambda形式的循环体,很少需要命名。然而大规模的循环体(例如几十行或几十页)会成为问题。保持函数体简短的规则也包含“保持循环体短小”的意思。类似地,作为回调参数使用的lambda表达式有些时候也会不平凡,但是不大可能被复用。Enforcement(实施建议)

  • See Keep functions short and simple

    参考保持函数简短的规则。

  • Flag identical and very similar lambdas used in different places.

    如果完全相同或非常相似的lambda表达式在不同的地方被使用,标记它们。

感谢各位的阅读,以上就是“C++怎么将有意义的操作封装为精心命名的函数”的内容了,经过本文的学习后,相信大家对C++怎么将有意义的操作封装为精心命名的函数这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

向AI问一下细节

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

c++
AI