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. BarTender是怎么做出雪花状文字

    一些小伙伴在做标签时,发现有的人做的标签上的文字颜色不是纯色的,问我是怎么做的.这种雪花状文字要设置出来其实很简单,只要用到字体颜色填充工具就可以了.下面,小编就来给大家简单介绍一下BarTender ...

  2. XE8 (RTM) Android SDK 更新安装(转)

    原地址:http://www.cnblogs.com/onechen/p/4379924.html 适用:XE8 Android 平台 问题:安装 XE8 RTM 时,如果勾选了 Android SD ...

  3. [zz]谱聚类

    了凡春秋USTC 谱聚类 http://chunqiu.blog.ustc.edu.cn/?p=505 最近忙着写文章,好久不写博客了.最近看到一个聚类方法--谱聚类,号称现代聚类方法,看到它简洁的公 ...

  4. Tomcat服务器重启失败:The server may already be running in another process, or a system process may be using the port.

    在控制台重启Tomcat服务器,报错如下: 原因分析: You've another instance of Tomcat already running. You can confirm this ...

  5. linux下解压大于4G文件提示error: Zip file too big错误的解决办法

    error: Zip file too big (greater than 4294959102 bytes)错误解决办法.zip文件夹大于4GB,在centos下无法正常unzip,需要使用第三方工 ...

  6. 原生js获取元素style属性

    function getStyle(ele,attr){ if( ele.currentStyle ){ return ele.currentStyle[attr]; // ie } else { r ...

  7. SQL查询一个月第一天/最后一天及日期格式化

    1.一个月第一天的Select DATEADD(mm, DATEDIFF(mm,0,getdate()), 0) 2.本周的星期一Select DATEADD(wk, DATEDIFF(wk,0,ge ...

  8. APP UI设计及切图规范

    APP UI设计及切图规范 1.概述 1.1 编写目的 该文档主要针对移动端开发的视觉设计和开发过程中的工作环节做统一的规划规范,是系统进入UI设计的前置文档.部分内容来自网络收集修编,转载请注明由 ...

  9. Cookie实现商品浏览记录--方式一:Java实现

    方式一:Java代码方式实现:此种方式实现思路较为顺畅.难点在于,如何实现将最近浏览的产品显示在最前面:实现方式是借助LinkedList提供的remove()方法,先将此id从列表中移除,然后再借助 ...

  10. CentOS7:安装Zabbix

    参考:CentOS 7 yum安装Zabbix 1. 安装Zabbix Server EPEL源里面有Zabbix的安装包,所以需要先安装EPEL. Zabbix源也可以从这里获得:http://re ...