c++编程规范101条规则与最佳实践1

c++编程规范101条规则与最佳实践1

ID:34417097

大小:754.59 KB

页数:17页

时间:2019-03-05

c++编程规范101条规则与最佳实践1_第1页
c++编程规范101条规则与最佳实践1_第2页
c++编程规范101条规则与最佳实践1_第3页
c++编程规范101条规则与最佳实践1_第4页
c++编程规范101条规则与最佳实践1_第5页
资源描述:

《c++编程规范101条规则与最佳实践1》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、设计风格复杂性啊,愚人对你视而不见,实干家受你所累。有些人避而远之。惟智者能够善加消除。——AlanPerlis我知道,但是却又忘记了Hoare的至理名言:不成熟的优化是程序设计中的万恶之源。①——DonaldKnuthTheErrorsofTeX[Knuth89]完全区分设计风格与编码风格是非常困难的。我们将一般在实际编写代码时才用得到的条款留到下一部分介绍。本部分集中讨论适用面比一个特定的类或者函数更广的原则和实践。比较典型的包括:简单和清晰之间的平衡(第6条),避免不成熟的优化(第8条),避免不成熟的劣化(第9条)。这三个条

2、款不仅适用于函数编写的层次,而且适用于类和模块设计权衡的更大范围,适用于更深的应用程序架构决策。(它们也适用于所有程序员。如果你不以为然,请重读上面Knuth的话,注意其中的引用部分。)紧接其后,本部分和下一部分的其他条款讨论的都是依赖性管理的各个方面。依赖性管理是软件工程的一个基础,也是贯穿本书不断出现的主题。停下来,任意选择一个优秀的软件工程技术(任何好的技术都行),思考一下。无论选择哪一个,都将发现,它都是在想尽办法减少依赖性。继承?是为了使所编写的代码使用不依赖于实际派生类的基类。尽量减少全局变量?是为了减少因可见范围太大

3、的数据所产生的远距离依赖。抽象?是为了消除处理概念的代码和实现它们的代码之间的依赖。信息隐藏?是为了使客户代码不依赖实体的实现细节。依赖性管理的一个相关问题还反映在避免使用共享状态(第10条)中,反映在应用信息隐藏(第11条),以及更多的其他条款中。本部分中我们选出的最有价值条款是第6条:正确、简单和清晰第一。因为这些要求真地太必需了。①DonaldKnuth(中文名高德纳),斯坦福大学荣誉退休教授,计算机科学大师,曾获得1974年图灵奖。撰有名著《计算机程序设计艺术》。——译者注12C++编程规范:101条规则、准则与最佳实践第

4、5条一个实体应该只有一个紧凑的职责摘要一次只解决一个问题:只给一个实体(变量、类、函数、名字空间、模块和库)赋予一个定义良好的职责。随着实体变大,其职责范围自然也会扩大,但是职责不应该发散。讨论人们常说,好的商业理念能够一言以敝之。同样,每个程序实体也应该只有一个明确的目的。如果一个实体有几个不同的目的,那么其使用难度往往会激增,因为这种实体除了会增加理解难度、复杂性和各部分中的错误外,还会导致其他问题。这种实体不仅更大(常常毫无合理理由),而且更难以使用和维护。此外,这种实体经常会为自身的一些特定用途提供有问题的接口,因为各个功

5、能领域之间的部分重叠,会影响干净利落地实现每个功能所需的洞察力。具有多个不同职责的实体通常都是难于设计和实现的。“多个职责”经常意味着“多重性格”——可能的行为和状态的各种组合方式。应该选择目的单一的函数(见第39条),小而且目的单一的类,以及边界清晰的紧凑模块。应该用较小的低层抽象构建更高层次的抽象。要避免将几个低层抽象集合成一个较大的低层次抽象聚合体。用几个简单的行为来实现一个复杂的行为,比反其道而行之更加容易。示例例1realloc。在标准C语言中,realloc是一个臭名昭著的不良设计。这个函数承担了太多的任务:如果传入的

6、指针参数为NULL就分配内存空间,如果传入的大小参数为0就释放内存空间,如果可行则就地重新分配,如果不行则移到其他地方分配。这个函数不易于扩展,普遍认为它是一个目光短浅的失败设计。例2basic_string。在标准C++语言中,std::basic_string是另一个臭名昭著的不良设计——巨大的类设计。在一个臃肿的类中添加了太多“多多益善”的功能,而这只是为了试图成为容器但却没有做到,在用迭代还是索引上犹豫不决,还毫无道理地重复了许多标准算法,而为扩展所留的裕度又很小(见第44条的示例)。参考文献[Henney02a]●[He

7、nney02b]●[McConnell93]§10.5●[Stroustrup00]§3.8,§4.9.4,§23.4.3.1●[Sutter00]§10,§12,§19,§23●[Sutter02]§1●[Sutter04]§37-40设计风格13第6条正确、简单和清晰第一摘要软件简单为美(KeepItSimpleSoftware,KISS):质量优于速度,简单优于复杂,清晰优于机巧,安全优于不安全(见第83条和第99条)。讨论简单设计和清晰代码的价值怎么强调都不过分。代码的维护者将因为你编写的代码容易理解而感谢你——而且这个维

8、护者往往就是未来的你,要努力回忆起6个月前的所思所想。于是有了下面这些经典的格言警句。程序必须为阅读它的人而编写,只是顺便用于机器执行。——HaroldAbelson和GeraldJaySussman编写程序应该以人为本,计算机第二。——Steve

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。