1. 代码块愈小,代码的功能就愈容易管理,代码的处理和移动就愈轻松。
  2. 任何一个傻瓜都能写出计算机可以理解的代码,唯有写出人类容易理解的代码,才是优秀的程序员。
  3. 绝大多数情况下,函数应该放在它所使用的数据的所属对象内。
  4. 最好不要在另一个对象的属性基础上运用switch语句,如果不得不使用,也应该在对象自己的数据上使用,而不是在别人的数据上使用。
  5. 确保任何时候都通过取值函数和设值函数来访问类型代码。
  6. 代码量减少并不会使系统运行更快,因为这对程序的运行轨迹几乎没有任何明显影响。
  7. 拥有短函数的对象会活的比较好、比较长...间接层所能带来的全部利益——解释能力、共享能力、选择能力——都是由小型函数支持的。
  8. 早期的编程语言中,子程序调用需要额外开销,这使得人们不太乐意使用小函数,现代OO语言几乎已经完全免除了进程内的函数调用开销。
  9. 最终的效果是:你应该更积极的分解函数。我们遵循这样一条原则:每当感觉需要注释来说明点什么的时候,我们就把需要说明的东西写进一个独立的函数中,并以其用途(而非实现手法)命名。
  10. 至于循环,你应该将循环和其内的代码提炼到一个独立的函数中。
  11. 有一种 经典的气味是:函数对某个类的兴趣搞过对自己所处类的兴趣。
  12. 大多数时候,一看到switch语句,你就应该考虑以多态来替换它。
  13. 如果你看到用户向一个对象请求另一个对象,然后再向后者请求另一个对象,然后再请求另一个对象...这就是消息链。采取这种方式,意味着客户代码与查找过程的导航结果紧密耦合。
  14. 我们之所以要在这里提到comments,是因为人们常把它当做除臭剂使用。常常会有这样的情况:你看到一段代码有着长长的注释,然后发现,这些注释之所以存在乃是因为代码很糟糕。
  15. 如果函数的某些参数未被用到,可以对它实施remove prarmeter
  16. 程序坏味道之夸夸其谈未来性,当有人说“噢,我想我们总有一天需要做这事”,并因而企图以各式各样的钩子和特殊情况来处理一些非必要的事情,这么做的结果往往造成系统更难理解和维护。
  17. 代码坏味道之令人迷惑的临时字段,有时候你会看到这样的对象,其内的某个变量仅为某种特定情况而设置
  1. 在C++中,不自觉的在程序开始处预先定义所有对象的做法是一种浪费。——《提高C++性能的编程技术》
  2. 考虑使用lazy evaluation(缓式评估)。———《More efficiency C++》
  3. 80-20法则:一个程序80%的资源用户20%的代码身上。———《More efficiency C++》
  4. 千万不要重载&&, || 操作符。 ———《More efficiency C++》
  5. C++保证删除空指针是安全的——《More efficiency C++ 条款10》
  6. 面对尚未完全构造好的对象,C++拒绝调用其destructor——《More efficiency C++ 条款10》
  7. 就C++多维数组来说,“先行后列”遍历效率肯定好于“先列后行”遍历,不论其行数远大于列还是情况相反甚至接近。——《高质量程序设计指南第四章》
  8. 不要在遍历(迭代)容器的过程中对容器进行插入、删除元素的操作。——《高质量程序设计指南第四章》
  9. switch的效率比if/else结构高,这正是switch语句存在的理由——《高质量程序设计指南第四章》
  10. 全局变量(extern或static的)存放在程序的静态数据区中,在程序进入main()之前创建,在main()结束后销毁,因此在我们的代码中根本没有机会初始化它们,编译器会自动提供了一个默认的全局初始化0。 ——《高质量程序设计指南 第四章》
  11. 不要使用间接递归,即一个函数通过调用另一个函数来调用自己,因为它会损害程序的清晰性。——— 《高质量程序设计指南第六章》
  12. 基本数据类型的参数不存在构造、析构的过程,而拷贝也非常快,“值传递”和“引用传递”的效率几乎相当。—— 《高质量程序设计指南 第六章》
  13. 对于编程来说,最大的挑战还是将问题概念化,编程中很多错误都是概念性的错误。——《代码大全第二章》
  14. 程序更具自我说明性,你可以改进像 currentFont.attribute or 0x02这样的语句替换成currentFont.SetBoldOn();——《代码大全 第六章》
  15. 代码块愈小,代码的功能就愈容易管理,代码的处理和移动就愈轻松;——《重构改善既有代码的设计》
  16. 任何一个傻瓜都能写出计算机可以理解的代码,唯有写出人类容易理解的代码,才是优秀的程序员;—— 《重构改善既有代码的设计》
  17. 我们之所以要在这里提到comments,是因为人们常把它当做除臭剂使用。常常会有这样的情况:你看到一段代码有着长长的注释,然后发现,这些注释之所以存在乃是因为代码很糟糕; —— 《重构 改善既有代码的设计》
  18. 你能够隐藏的信息越多,在同一时间所需要考虑的信息就越少,你需要考虑的信息越少,则忘记某一项信息而犯错误的几率就越小。——《代码大全 p251》

c++程序设计之编程思想的更多相关文章

  1. java编程思想-复用类总结

    今天继续读<java 编程思想>,读到了复用类一章,看到总结写的很好,现贴上来,给大家分享. 继承和组合都能从现有类型生成新类型.组合一般是将现有类型作为新类型底层实现的一部分来加以复用, ...

  2. IT第二十天 - 面向对象编程思想、抽象类、异常处理、程序操作日志记录、本周总结 ★★★

    IT第二十天 上午 面向对象编程思想 1.组装电脑的设计: (1)电脑的组成:显示器+机箱 (2)机箱的组成:电源+主板+硬盘 (3)主板所包含的部件:cpu+内存+PCI接口+usb接口 (4)PC ...

  3. 关于Java、Python、Go编程思想的不同

    Go学习笔记 - 关于Java.Python.Go编程思想的不同 看了两周七牛团队翻译的<Go语言程序设计>,基本上领略到了Go语言的魅力.学习一个语言,语法什么的任何人都是很容易学会,难 ...

  4. Java编程思想读书笔记(一)【对象导论】

    2018年1月7日15:45:58 前言 作为学习Java语言的经典之作<Java编程思想>,常常被人提起.虽然这本书出版十年有余,但是内容还是很给力的.很多人说这本书不是很适合初学者,我 ...

  5. 论AOP面向切面编程思想

    原创: eleven 原文:https://mp.weixin.qq.com/s/8klfhCkagOxlF1R0qfZsgg [前言] AOP(Aspect-Oriented Programming ...

  6. Java编程思想(后)

    Java编程思想(后) 持有对象 如果一个程序只包含固定数量的且其生命期都是已知的对象,那么这是一个非常简单的程序. Java中的库基本类型: List, Set, Queue和Map --- 称为集 ...

  7. 《Java编程思想第四版》附录 B 对比 C++和 Java

    <Java编程思想第四版完整中文高清版.pdf>-笔记 附录 B 对比 C++和 Java “作为一名 C++程序员,我们早已掌握了面向对象程序设计的基本概念,而且 Java 的语法无疑是 ...

  8. (Java编程思想)Thinking in Java

    1. 为什么突然想去研读<Thinking in Java>? 最近终于下定决心撸了一本<Thinking in Java>第四版,虽然在此之前我就久闻这本书的大名,但一直未曾 ...

  9. Java编程思想 4th 第2章 一切都是对象

    Java是基于C++的,但Java是一种更纯粹的面向对象程序设计语言,和C++不同的是,Java只支持面向对象编程,因此Java的编程风格也是纯OOP风格的,即一切都是类,所有事情通过类对象协作来完成 ...

随机推荐

  1. close-vs-shutdown-socke

    http://stackoverflow.com/questions/4160347/close-vs-shutdown-socket http://blog.csdn.net/jnu_simba/a ...

  2. 打造完美的xml技术解决方案(dom4j/xstream)

    转: XML 技术是随着 Java 的发展而发展起来的.在 XML 出现之前对于简单的数据格式通常是存储在 ini 配置文件等文本文件中,复杂的格式则采用自定义的文件格式,因此对于每种文件格式都要有专 ...

  3. 格式化xml

    在程序代码开发过程中,我们可能有时候需要将xml报文进行格式化一下,整理了一下,大概有两种方法: public String formatXml(String inputXml){ SAXReader ...

  4. case使用例子

    echo 'Input a number between 1 to 4' echo 'Your number is:\c' read aNum case $aNum in 1) echo 'You s ...

  5. 3、SSH高级服务

    1.ssh服务生成新的公钥和私钥[root@rhel6_80 ~]# ssh-keygen Generating public/private rsa key pair. Enter file in ...

  6. sqlite升级--浅谈Android数据库版本升级及数据的迁移

    Android开发涉及到的数据库采用的是轻量级的SQLite3,而在实际开发中,在存储一些简单的数据,使用SharedPreferences就足够了,只有在存储数据结构稍微复杂的时候,才会使用数据库来 ...

  7. FreeRTOS知识点

    特点: FreeRTOS任务不容许以任何方式从  任务中 实现函数中返回--绝对不能有return语句,也不能执行到函数末尾.如果任务不再需要,可以显示的删除. 一个任务函数可以用来创建若干个任何-- ...

  8. JVM实用参数(四)内存调优

    理想的情况下,一个Java程序使用JVM的默认设置也可以运行得很好,所以一般来说,没有必要设置任何JVM参数.然而,由于一些性能问题(很不幸的是,这些问题经常出现),一些相关的JVM参数知识会是我们工 ...

  9. c# 变量,对象,静态类型,集合类的线程安全回顾

    1.变量的线程安全性与变量的作用域有关. 2.对象 对象是类型的实例 在创建对象时,会单独有内存区域存储对象的属性和方法.所以,一个类型的多个实例,在执行时,只要没有静态变量的参与,应该都是线程安全的 ...

  10. exp导出做成批处理注意事项

    不能叫exp.bat,会一直显示导出这句话. 出现EXP-00106: 数据库链接口令无效:是因为http://blog.csdn.net/hzfu007/article/details/189823 ...