c++程序设计之编程思想
- 代码块愈小,代码的功能就愈容易管理,代码的处理和移动就愈轻松。
- 任何一个傻瓜都能写出计算机可以理解的代码,唯有写出人类容易理解的代码,才是优秀的程序员。
- 绝大多数情况下,函数应该放在它所使用的数据的所属对象内。
- 最好不要在另一个对象的属性基础上运用switch语句,如果不得不使用,也应该在对象自己的数据上使用,而不是在别人的数据上使用。
- 确保任何时候都通过取值函数和设值函数来访问类型代码。
- 代码量减少并不会使系统运行更快,因为这对程序的运行轨迹几乎没有任何明显影响。
- 拥有短函数的对象会活的比较好、比较长...间接层所能带来的全部利益——解释能力、共享能力、选择能力——都是由小型函数支持的。
- 早期的编程语言中,子程序调用需要额外开销,这使得人们不太乐意使用小函数,现代OO语言几乎已经完全免除了进程内的函数调用开销。
- 最终的效果是:你应该更积极的分解函数。我们遵循这样一条原则:每当感觉需要注释来说明点什么的时候,我们就把需要说明的东西写进一个独立的函数中,并以其用途(而非实现手法)命名。
- 至于循环,你应该将循环和其内的代码提炼到一个独立的函数中。
- 有一种 经典的气味是:函数对某个类的兴趣搞过对自己所处类的兴趣。
- 大多数时候,一看到switch语句,你就应该考虑以多态来替换它。
- 如果你看到用户向一个对象请求另一个对象,然后再向后者请求另一个对象,然后再请求另一个对象...这就是消息链。采取这种方式,意味着客户代码与查找过程的导航结果紧密耦合。
- 我们之所以要在这里提到comments,是因为人们常把它当做除臭剂使用。常常会有这样的情况:你看到一段代码有着长长的注释,然后发现,这些注释之所以存在乃是因为代码很糟糕。
- 如果函数的某些参数未被用到,可以对它实施remove prarmeter
- 程序坏味道之夸夸其谈未来性,当有人说“噢,我想我们总有一天需要做这事”,并因而企图以各式各样的钩子和特殊情况来处理一些非必要的事情,这么做的结果往往造成系统更难理解和维护。
- 代码坏味道之令人迷惑的临时字段,有时候你会看到这样的对象,其内的某个变量仅为某种特定情况而设置
- 在C++中,不自觉的在程序开始处预先定义所有对象的做法是一种浪费。——《提高C++性能的编程技术》
- 考虑使用lazy evaluation(缓式评估)。———《More efficiency C++》
- 80-20法则:一个程序80%的资源用户20%的代码身上。———《More efficiency C++》
- 千万不要重载&&, || 操作符。 ———《More efficiency C++》
- C++保证删除空指针是安全的——《More efficiency C++ 条款10》
- 面对尚未完全构造好的对象,C++拒绝调用其destructor——《More efficiency C++ 条款10》
- 就C++多维数组来说,“先行后列”遍历效率肯定好于“先列后行”遍历,不论其行数远大于列还是情况相反甚至接近。——《高质量程序设计指南第四章》
- 不要在遍历(迭代)容器的过程中对容器进行插入、删除元素的操作。——《高质量程序设计指南第四章》
- switch的效率比if/else结构高,这正是switch语句存在的理由——《高质量程序设计指南第四章》
- 全局变量(extern或static的)存放在程序的静态数据区中,在程序进入main()之前创建,在main()结束后销毁,因此在我们的代码中根本没有机会初始化它们,编译器会自动提供了一个默认的全局初始化0。 ——《高质量程序设计指南 第四章》
- 不要使用间接递归,即一个函数通过调用另一个函数来调用自己,因为它会损害程序的清晰性。——— 《高质量程序设计指南第六章》
- 基本数据类型的参数不存在构造、析构的过程,而拷贝也非常快,“值传递”和“引用传递”的效率几乎相当。—— 《高质量程序设计指南 第六章》
- 对于编程来说,最大的挑战还是将问题概念化,编程中很多错误都是概念性的错误。——《代码大全第二章》
- 程序更具自我说明性,你可以改进像 currentFont.attribute or 0x02这样的语句替换成currentFont.SetBoldOn();——《代码大全 第六章》
- 代码块愈小,代码的功能就愈容易管理,代码的处理和移动就愈轻松;——《重构改善既有代码的设计》
- 任何一个傻瓜都能写出计算机可以理解的代码,唯有写出人类容易理解的代码,才是优秀的程序员;—— 《重构改善既有代码的设计》
- 我们之所以要在这里提到comments,是因为人们常把它当做除臭剂使用。常常会有这样的情况:你看到一段代码有着长长的注释,然后发现,这些注释之所以存在乃是因为代码很糟糕; —— 《重构 改善既有代码的设计》
- 你能够隐藏的信息越多,在同一时间所需要考虑的信息就越少,你需要考虑的信息越少,则忘记某一项信息而犯错误的几率就越小。——《代码大全 p251》
c++程序设计之编程思想的更多相关文章
- java编程思想-复用类总结
今天继续读<java 编程思想>,读到了复用类一章,看到总结写的很好,现贴上来,给大家分享. 继承和组合都能从现有类型生成新类型.组合一般是将现有类型作为新类型底层实现的一部分来加以复用, ...
- IT第二十天 - 面向对象编程思想、抽象类、异常处理、程序操作日志记录、本周总结 ★★★
IT第二十天 上午 面向对象编程思想 1.组装电脑的设计: (1)电脑的组成:显示器+机箱 (2)机箱的组成:电源+主板+硬盘 (3)主板所包含的部件:cpu+内存+PCI接口+usb接口 (4)PC ...
- 关于Java、Python、Go编程思想的不同
Go学习笔记 - 关于Java.Python.Go编程思想的不同 看了两周七牛团队翻译的<Go语言程序设计>,基本上领略到了Go语言的魅力.学习一个语言,语法什么的任何人都是很容易学会,难 ...
- Java编程思想读书笔记(一)【对象导论】
2018年1月7日15:45:58 前言 作为学习Java语言的经典之作<Java编程思想>,常常被人提起.虽然这本书出版十年有余,但是内容还是很给力的.很多人说这本书不是很适合初学者,我 ...
- 论AOP面向切面编程思想
原创: eleven 原文:https://mp.weixin.qq.com/s/8klfhCkagOxlF1R0qfZsgg [前言] AOP(Aspect-Oriented Programming ...
- Java编程思想(后)
Java编程思想(后) 持有对象 如果一个程序只包含固定数量的且其生命期都是已知的对象,那么这是一个非常简单的程序. Java中的库基本类型: List, Set, Queue和Map --- 称为集 ...
- 《Java编程思想第四版》附录 B 对比 C++和 Java
<Java编程思想第四版完整中文高清版.pdf>-笔记 附录 B 对比 C++和 Java “作为一名 C++程序员,我们早已掌握了面向对象程序设计的基本概念,而且 Java 的语法无疑是 ...
- (Java编程思想)Thinking in Java
1. 为什么突然想去研读<Thinking in Java>? 最近终于下定决心撸了一本<Thinking in Java>第四版,虽然在此之前我就久闻这本书的大名,但一直未曾 ...
- Java编程思想 4th 第2章 一切都是对象
Java是基于C++的,但Java是一种更纯粹的面向对象程序设计语言,和C++不同的是,Java只支持面向对象编程,因此Java的编程风格也是纯OOP风格的,即一切都是类,所有事情通过类对象协作来完成 ...
随机推荐
- lvs+keeplived笔录
关于keeplived配置文件的详细描述如下 链接:http://blog.csdn.net/jibcy/article/details/7826158 实验环境: 主Keepalived 172.1 ...
- 另类vs2015+xamarin 的android界面乱码 解决
text.Text += "验证key 验证出错! 请在 AndroidManifest.xml 文件中检查 key 设置"; 代码就上面一行,单步走之前text.Text里面是汉 ...
- Orchard学习笔记
1.下载Orchard sourcrs资源文件,同时也可以去百度下载中文包 资源地址(https://github.com/OrchardCMS/Orchard/releases/download/1 ...
- 未能加载文件或程序集 Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad
没有 microsoft.web.infrastructure.dll 文件. 解决方式: ,第一种:在所发布的项目文件里面的 bin 文件目录下,添加 microsoft.web.infrastru ...
- java1234教程系列笔记 S1 Java SE chapter 02 lesson 03 java基本数据类型
第二章 第三节 数据类型 3.1 分类 基本数据类型.引用类型 3.2整型 byte 8 short 16 int 32 long 64 作业: A:1-10求和 B:float double 的最 ...
- Linux LVM硬盘管理之一:概念介绍
一.LVM概念介绍: LVM是 Logical Volume Manager(逻辑卷管理)的简写,它由Heinz Mauelshagen在Linux 2.4内核上实现.LVM将一个或多个硬盘的分区在逻 ...
- linux 1-100的累加
[ ] 判断式.它的使用和test命令一样 [ ]的判断符,只会返回2种值.0(真) 非0(假) -gt 大于-lt 小于-eq 等于-ne 不等于-ge 大于等于-le 小于等于 while ...
- sp_who_lock
USE MyDataBase GO /****** Object: StoredProcedure [dbo].[sp_who_lock] Script Date: 4/10/2015 ******/ ...
- jq插件的传值
因插件方式写的少,先慢慢记录. 默认的参数值 jQuery.fn.shadow =function(options){ var defaults = { slices : 5, opacity : 0 ...
- dispatch_set_target_queue 说明
参照:http://blog.csdn.net/growinggiant/article/details/41077221 http://codingobjc.com/blog/2013/05/07/ ...