zl程序教程

您现在的位置是:首页 >  后端

当前栏目

《C++编程规范:101条规则、准则与最佳实践》——2.5 不要进行不成熟的劣化

C++规则编程 实践 进行 最佳 规范 不要
2023-09-11 14:17:35 时间

本节书摘来自异步社区出版社《C++编程规范:101条规则、准则与最佳实践》一书中的第2章,第2.5节,作者:【加】Herb Sutter , 【罗】Andrei,更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.5 不要进行不成熟的劣化

摘要
放松自己,轻松编程:在所有其他事情特别是代码复杂性和可读性都相同的情况下,一些高效的设计模式和编程惯用法会从你的指尖自然流出,而且不会比悲观的替代方案更难写。这并不是不成熟的优化,而是避免不必要的劣化(pessimization)。

讨论
避免不成熟的优化并不意味着必然损害性能。所谓不成熟的劣化,指的就是编写如下这些没有必要的、可能比较低效的程序。

在可以通过引用传递的时候,却定义了通过值传递的参数(见第25条)。
在使用前缀++操作符很合适的场合,却使用后缀版本(见第28条)。
在构造函数中使用赋值操作而不是初始化列表(见第48条)。
如果减少对象的伪临时副本(尤其是在内循环中)并不影响代码的复杂性,那么这个优化就算不上是不成熟的优化。在第18条中,我们提倡尽可能将变量声明为局部的,但是又提到了一个例外情况,即有时候将变量从循环中提出来是有好处的。大多数时候,这一点也不会混淆代码的意图,相反,实际上这有助于澄清循环内部执行了哪些功能,哪些计算是不随循环变化的。当然,应该优先使用算法,而不是显式的循环(见第84条)。

构造既清晰又有效的程序有两种重要的方式:使用抽象(见第11条和第36条)和库(见第84条)。例如,使用标准库的vector、list、map、find、sort和其他设施,这些都是由世界级的专家标准化并实现的,不仅能使你的代码更加清晰,更容易理解,而且启动也经常更快。

避免不成熟的劣化在编写库的时候尤其重要。要了解库所使用的所有上下文,通常是不可能的,因此可能需要达到一种平衡,在更加倾向效率和可复用性的同时,又不能因为一小部分潜在的调用者的利益过分提高效率。其中的界限需要你来划定,但是正如第7条所说明的,更需要关注的是可伸缩性,而不是挤掉一个小小的循环。

参考文献
[Keffer95]pp.12-13 ● [Stroustrup00]§6 introduction ● [Sutter00]§6


《深入理解Android:Telephony原理剖析与最佳实践》一2.5 使用Source Insight方便阅读C/C++代码 本节书摘来自华章出版社《深入理解Android:Telephony原理剖析与最佳实践》一 书中的第2章,第2.5节,作者:杨青平,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
《C++编程规范:101条规则、准则与最佳实践》——导读 许多糟糕的编程规范都是由一些没有很好地理解语言、没有很好地理解软件开发或者试图标准化过多东西的人制定的。糟糕的编程规范会很快丧失可信度,如果程序员不喜欢或者不同意其中一些糟糕的准则,那么即使规范中有一些合理的准则,也可能被不抱幻想的程序员所忽略,这还是最好的情况,最坏的情况下,糟糕的标准可能真会被强
异步社区 异步社区(www.epubit.com)是人民邮电出版社旗下IT专业图书旗舰社区,也是国内领先的IT专业图书社区,致力于优质学习内容的出版和分享,实现了纸书电子书的同步上架,于2015年8月上线运营。公众号【异步图书】,每日赠送异步新书。