• 网络学院
  • IT资讯
  • 操作系统
  • 网络技术
  • 软件应用
  • 办公软件
  • 编程技术
  • 网站架设
  • 数据库类
  • 平面设计
  • 多媒体类
  • 游戏资讯
  • 教学论文
  • 认证考试
《C++编程规范》笔记(设计风格)
  站点:
  • 首 页
  • 最新软件
  • 文章教程
  • 国内软件
  • 国外软件
  • 绿色软件
  • 源码下载
  • 字体下载
《C++编程规范》笔记(设计风格)
软件发布 《C++编程规范》笔记(设计风格)
网络软件 系统工具 应用软件 联络聊天 图形图像 多媒体类 行业软件 游戏娱乐 编程开发 安全相关 教育教学 数码软件 绿软下载
热门软件: QQ 瑞星 pplive e话通 木马克星 千千静听 office2000 五笔字根 Photoshop 视频分割
返回文章教程首页 >> 文章首页 >> 认证考试 >> 计算机等级考试 >> 计算机二级考试 >> 《C++编程规范》笔记(设计风格)

《C++编程规范》笔记(设计风格)

添加时间: 2007-5-6 2:38:47  作者: 计算机等级考试认证参考  阅读次数:199   来源: http://www.d9soft.com

       

  第1条:一个实体应该只有一个紧凑的职责
  单一职责原则。这个原则并不那么容易执行,即使是STL这样的程序库,也一样会犯违反该原则的错误。在这里,举了两个违反这一原则的著名实现:realloc和stl 中的basic_string。不过,对于basic_string,我想比起MFC中的CString还是好了不少。在《Exceptional C++ style》中,对basic_string作了剖析,并且得出一个普遍的原则:尽量将函数实现为独立的函数而不是成员函数。
  尝试用一句话来说明一个模块的功能,既不多,也不少。如果无法用这样的一句话加以概括,那么重新考虑规划该模块的职责。  

  第2条:正确、简单和清晰第一
  简单的说,坚持KISS原则:正确优于速度,简单优于复杂,清晰优于机巧, 安全 优于不安全。
  程序必须为阅读它的人编写,只是顺便用于机器执行 * 编写程序应该以人为本,计算机第二
  计算机系统中最便宜、最快速、最可靠的组件都还不存在
  ......简单设计的重要性怎么强调也不过分
  使一个正确的程序变快,比使一个快速的程序正确要容易的多
  避免使用程序设计语言的冷僻特性,应该使用最简单的有效技术
  不要毫无节制地重载运算符。
  不要滥用匿名变量,合理使用命名变量。当然,这不是说连vector().swap(other)这样的惯用法也要排斥。 

  第3条:编程中应知道何时和如何考虑可伸缩性
  从字面上来看,这差不多等于外交辞令。答案无非是“适当的”时候“适当地”考虑可伸缩性。这非常依赖于软件工程师的经验和知识。所以,本条目也“适当地”回避了那种缺乏营养的教导,着重讨论算法复杂度的选择问题。
  基本上,线性复杂度可以作为一个算法是否可选的分界点。值得花费精力避免选择差于线性复杂度的算法,而不差于线性复杂度的算法则可以接受。所以,把性能放在嘴边的兄弟们注意了,你的精力可别放错了地方,高德纳言犹在耳:不成熟的优化是程序设计中的万恶之源。必要时,先努力优化复杂度(选择好的算法----算法无用论者,去面壁!)。
  顺便提一句排序算法,通用排序算法的复杂度最好是O(NlgN),但是特定领域完全可以有更好复杂度的算法。  

  第4条:不要进行不成熟的优化
  “不成熟的优化是程序设计中的万恶之源” ----高德纳引用的这句话这本书中出现了若干次,高德纳在他的不朽名著《计算机程序设计艺术》中也一再强调了这一点,还说他以前程序中的许多错误都是关于不成熟优化的。看来,唯一在诱惑面前没有堕落的,只有耶稣,即使是大师也无法抗拒。既然如此,建议把下面的话放在电脑桌面上:  
  让一个正确的程序更快速,
  比让一个快速的程序正确,要容易的太多太多。

  第5条:不要进行不成熟的劣化
  什么是不成熟的劣化呢?典型的有:  
  在可以通过引用传递的时候,却定义了通过值传递参数。
  在使用前缀++操作符很适合的场合,却使用后缀版本。
  在构造函数中使用赋值操作而不是初始化列表。
  关于第一条有一些例外,一般而言,不建议传递原生类型的引用(讨论前提是传值的程序语义没有问题)。关于第二条,一些很老的C语言的书上有过后缀版本可能比前缀版本更快----当然,这只可能针对原生类型--的说法,忘记它吧,现代编译器会轻而易举的优化掉这之间的差异。而对于用户定义类型,实现后缀形式的++和--操作符都意味着效率上的损失。习惯的力量是巨大的,养成使用前缀版本的习惯吧。
  然而,要区别不成熟的优化和不成熟的劣化之间,需要足够的训练和基础知识,这些知识可以从《Effective C++》,《More Effective C++》《Exceptional C++》《More Exceptional C++》中获得。

  第6条:尽量减少全局和共享数据
  全局数据是应该努力避免的,它导致两个问题:名字污染和远程耦合。类的公有静态变量只是解决了名字污染问题,并没有解决远程数据耦合问题。同样,Singleton模式也存在远程耦合问题。
  全局数据通常就意味着共享,共享数据则意味着关系,意味着复杂性。再多线程中,对共享数据的访问通常都需要串行化。
  关于变量,一个比较深刻的看法是:一个算法使用的变量(命名的和匿名的)越少,就越好。这个变量包括局部变量。  

  第7条:信息隐藏
  对于一个类,决不要将数据公开(数值聚合的struct 例外),也不要返回指向内部数据成员的指针或引用供外部代码修改。通过提供抽象,我们将获得插入不变式 检查 的能力。  

  第8条:懂得何时和如何进行并发性编程
  这个问题主要是考虑多线程和多进程的编程,我期待着并行程序设计进入C++的领域。要编写正确、 安全 的多线程代码并不简单,特别是考虑到可移植性时,更是如此。
  不过,本条目的题目太大了,很难在一个条目中描述完整,只能概述几个要点:  
  参考目标平台文档,了解该平台的同步化原语。
  最好将平台原语用自己设计的抽象包装起来
  确保正在使用的类型在多线程程序中使用是安全的

  第9条:确保资源为对象所拥有。使用显式的RAII和智能指针
  好像是在《Imperfact C++》中说过:仅仅因为有RAII就值得使用C++。C++/CLI也强调引入确定性析构,确定性析构正式RAII得以实现的基础之一。通过RAII我们能够得到的远远超出一般程序员的想象,在讨论异常安全代码时,将进一步见识RAII的威力。
  在实现RAII时,需要小心复制构造和赋值,编译器的版本可能并不正确。另外,需要确保资源为对象所有,不要在一行分配一个以上的资源。下面的代码是不安全的:
  Fun(shared_ptr(new Widget), shared_ptr(new Widget));
  取而代之的正确方法是:
  shared_ptr sp1(new Widget), sp2(new Widget);
   Fun(sp1, sp2);

 

上下文章:

 

上一篇文章: 如何编写高质量的VB代码 下一篇文章: 2006年全国计算机等级考试二级C考前密卷

相关文章:

  • QMAIL+MH设计方案(一)
  • QMAIL+MH设计方案(二)
  • QMAIL+MH设计方案(三)
  • QMAIL+MH设计方案(四)
  • QMAIL+MH设计方案(五)

相关软件:

  • 胜新通用条形码设计打印系统 6.09
  • 冬莲报表设计器 V1.0
  • XP风格农历控件组合 V1.00
  • HiHand结构设计工具箱 2005 Build 0903
  • 创想家居设计软件 V9.5 普及版
  • 胜新通用条形码设计打印系统 6.08 网络版

 

快速导航

  • 网络学院
  • 精品汇聚
  • 字体下载
  • 教程下载
  • ASP源码
  • PHP源码
  • Net源码
  • JSP 源码

计算机等级考试分类导航

  • 计算机等级考试动态
  • 计算机一级考试
  • 计算机二级考试
  • 计算机三级考试
  • 计算机四级考试

本类经典文章推荐

  • 2006年全国计算机等级考试二级C考...
  • 《C++编程规范》笔记(设计风格)
  • 如何编写高质量的VB代码
  • VB编程的几个API函数的应用问题
  • VB编程:去掉窗体的关闭按钮
  • 最简Windows编程
  • VB编程:如何在列表框中自动查找
  • VB指导:生成auto-OK对话框
  • 使用VB的布局工具节省编程时间
  • VB中利用Winrar进行文件压缩

计算机二级考试阅读排行

  • 2006年全国计算机等级考试二级C考...
  • VB编程:去掉窗体的关闭按钮
  • 计算机二级:《计算机基础》考试题
  • 全国计算机等级考试二级VISUALFOX...
  • 二级C语言程序设计试题(含答案)
  • 全国计算机等级考试二级VB常用函数...
  • 2005年9月17日二级VF笔试试题答案
  • 二级VF程序设计全真预测试卷(一)
  • 2005年9月计算机等级考试二级笔试...
  • 《C++编程规范》笔记(设计风格)

计算机等级考试阅读总排行

  • 全国计算机等级考试一级模拟试题01
  • 全国计算机等级考试一级模拟试题10
  • 全国计算机等级考试一级模拟试题08
  • 全国计算机等级考试一级考试最新模...
  • 全国计算机等级考试一级模拟试题07
  • 全国计算机等级考试一级模拟试题02
  • 全国计算机等级考试一级模拟试题06
  • 全国计算机等级考试一级模拟试题03
  • 一级(WINDOWS)试题解析-Word篇
  • 全国计算机等级考试上机考试应试技...

广告位置

字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 回到顶部

关于我们 | 版权声明 | 免责条款 | 广告联系 | 软件发布 | 下载帮助 | 下载排行 | 网站地图 | 特别鸣谢 | 友情连接

copyright; 2005-2008 D9soft.com 第九软件网 版权所有