排序:
默认
按更新时间
按访问量
RSS订阅

[读书笔记] 重构改善既有代码的设计(5)

继续整理下第七章的内容, 关于对象属性的迁移。1. 迁移函数当某个函数与其不所属类有着更密切的关系时,考虑把该函数移到新类中,在新类中建立一个有着类似行为的函数,移除就函数,或者将旧函数变成一个单纯的委托函数。这样做的目的是减少类间的耦合,保证类更简单。2. 迁移字段跟第一条类似,如果类的某个成员...

2017-05-04 22:09:00

阅读数 321

评论数 0

[读书笔记] 重构改善既有代码的设计(4)

最近比较忙,偷闲整理下第六章的内容,关于重新组织函数的内容。1. 提炼函数比较简单但又很常用的手法,目的是把一段逻辑上紧密联系构成相对独立功能块的代码封装起来,通过函数名字清晰的表达其用途,这样潜在的提供了其他模块复用该函数的概率,同时也更加易于维护,因为原来嵌在一大段逻辑中的代码被抽离出来了,对...

2017-04-27 21:47:03

阅读数 196

评论数 0

[读书笔记] 重构改善既有代码的设计(3)

继续整理本书的内容。第四章:构建测试体系。关于测试体系的几条参考准则: 1. 确保所有的测试都完全自动化,让他们检查自己的测试结果。 2. 一套测试就是一个很强大的bug侦测器,能够大大的缩减查找bug所需的时间。 3. 频繁的运行测试,每次编译请把测试也考虑进去,至少每天执行一遍每一个测试...

2017-04-04 21:29:36

阅读数 224

评论数 0

[读书笔记] 重构改善既有代码的设计(1)

《重构:改善既有代码的设计》已经读了一大半了,书中讲了很多的重构手段和指导原则,但整体感受下来,重构的一个主要目的就是消除重复,放眼看去,众多的重构手段都是在消除重复代码,提炼函数,提炼父类等等。 之后会针对每一章,整理一下读书笔记,方便之后参阅。第一章:重构,第一个案例着一章主要是起到入门的作...

2017-01-16 21:09:04

阅读数 296

评论数 0

[读书笔记] 深入探索C++对象模型-第七章-站在对象模型的尖端(下)

整理本系列笔记的最后一篇,关于运行时类型信息(RTTI)。保证安全的向下转型向下类型转换:是指由父类向子类的类型转换,由于父类信息少于子类,所以通常来说,没有特殊机制支持的话,这种转换是不安全的,要支持此机制的话,在空间和时间上都需要额外的负担: 1. 空间上,需要额外的空间存储类型信息,通常是...

2016-11-01 23:51:02

阅读数 266

评论数 0

[读书笔记] 深入探索C++对象模型-第七章-站在对象模型的尖端(中)

继续整理最后一章的内容,这一篇是关于异常处理的。注:初学markDown,所得尚少,排版简陋,多多包涵欲支持异常处理,编译器的主要工作是找出catch子句,追踪程序堆栈中每一个函数的当前作用域,编译器必须提供某种查询异常对象的方法,以知道其实际类型(RTTI来源),最后,编译器还需要某种机制管理被...

2016-10-26 22:00:37

阅读数 243

评论数 0

[读书笔记] 深入探索C++对象模型-第七章-站在对象模型的尖端(上)

整理最后一章的内容,关于模板,异常处理以及运行时类型信息的(RTTI: Run Time Type Information)。

2016-10-17 23:20:22

阅读数 256

评论数 0

[读书笔记] 深入探索C++对象模型-第六章-执行期语义学(下)

继续整理第六章剩下的内容,关于临时对象的几条准则。 1. 在某些情况下,编译器可以产生必要的,或者可以带来方便的临时对象,具体行为由编译器来定义。例如,对于如下操作: T a, b; T c = a + b;//T operator+ (const T&, const T&)a. ...

2016-10-11 21:26:47

阅读数 184

评论数 0

[读书笔记] 深入探索C++对象模型-第六章-执行期语义学(中)

国庆假期小栖,继续整理第六章的内容。 关于new和delete运算符。 a. 使用new运算符构造对象时, 例如: Point3d* origin = new Point3d; 会被转化为两个操作:分配空间和调用类的构造函数: Point3d* origin; if(origin = __n...

2016-10-08 23:57:53

阅读数 154

评论数 0

[读书笔记] 深入探索C++对象模型-第五章-构造、析构、拷贝语义学(下)

继续整理第五章剩下的内容,关于析构函数语义的。 1. 如果类没有定义析构函数,那么只有类中含有成员对象(或者本类的基类)拥有析构函数的情况下,编译器才会合成一个出来,否则析构函数被视为不要,也就不需要合成。例如,如下类,虽然Point类拥有虚函数: class Point { piblic: ...

2016-09-26 22:25:58

阅读数 282

评论数 0

[读书笔记] 深入探索C++对象模型-第五章-构造、析构、拷贝语义学(中)

继续整理第五章的内容,关于对象复制的。  对于默认的拷贝赋值操作符,在如下情况下不会表现出按位拷贝(bitwise copy:关于按位拷贝,实际就是不使用拷贝构造函数或者拷贝赋值操作符,这里的不使用是指编译器根本不会产生,而是采用按位拷贝对象数据的方式,若对象中含有指针,此时的指针只是地址级别的浅...

2016-09-22 23:43:37

阅读数 533

评论数 0

[读书笔记] 深入探索C++对象模型-第五章-构造、析构、拷贝语义学(上)

继续整理第五章的内容,关于累的三个重要函数:构造函数,析构函数,拷贝构造函数。注:以下部分图片来自原书 1. 无继承情况下的对象构造。 当类中存在虚函数时,编译器会对该类产生膨胀作用, 例如如下类: class Point { public: Point(float x = 0.0, fl...

2016-09-20 00:17:30

阅读数 487

评论数 0

[读书笔记] 深入探索C++对象模型-第四章-Function语义学(下续)

第四章的最后,补充几点关于内联(inline)函数的: inline函数参数带有副作用,或者是以一个单一的表达式做多重调用,或是inline函数中有多个局部变量,都会产生临时对象,可能会产生大量的扩展码,是程序的大小膨胀,所以inline函数的使用必须要谨慎: 1. 对于单一表达式的多重调用: 对...

2016-09-18 00:16:47

阅读数 217

评论数 0

[读书笔记] 深入探索C++对象模型-第四章-Function语义学(下)

继续第四章的内容整理,这一部分也是第四章的最后一部分,是关于成员函数指针的,第三章下的内容整理是关于成员变量指针的,这个则是成员函数指针,二者可以互为参考。 1. 非虚成员函数指针(非静态)。 取一个非静态成员函数的地址,如果该函数是非虚函数,则得到的是它在内存中的真正地址,但是该地址并不完全,需...

2016-09-17 22:13:07

阅读数 274

评论数 0

[读书笔记] 深入探索C++对象模型-第四章-Function语义学(中续)

继续整理函数调用的第三种情况内容,注:以下部分图片来自于原文 3. 虚拟继承情况下的虚函数调用:  如下例子,Point3d虚拟继承自Point2d: 此时的内存布局如下,注意此时虽然Point3d只有唯一一个基类(最左边的)Point2d,但是它们的布局并不像非虚拟继承的单一继承那样...

2016-09-14 23:28:35

阅读数 235

评论数 0

[读书笔记] 深入探索C++对象模型-第四章-Function语义学(中)

继续整理第四章的内容,注:以下部分图片来自于原文 1. 单继承情况下的虚函数调用:  对于多态虚函数的调用(通过基类指针或者引用),例如ptr->z();,需要知道两个信息:     a. ptr所指对象的真实类型,这可以使我们选择正确的z()实体;     b. z()实体位置,以便可以调...

2016-09-13 21:22:01

阅读数 401

评论数 0

[读书笔记] 深入探索C++对象模型-第四章-Function语义学(上)

开始整理第四章的内容,关于函数的东西。 1. 静态成员函数不可以是const的,原因是因为this指针,详细参考:http://blog.csdn.net/beyongwang/article/details/52403697 2. 成员函数可以分成几类: a. 非静态成员函数:此类函数会隐含一个...

2016-09-10 21:43:24

阅读数 379

评论数 0

[读书笔记] 深入探索C++对象模型-第三章 Data语义学(下)

整理第三章最后的部分内容,关于数据成员指针的,之前竟然没听过类数据成员指针一说,果然路漫漫其修远兮啊。 注:以下例子和图片来源于原书。 1. 数据成员指针是指指向类数据成员的指针,其内容为对应数据成员在类对象中的偏移量,类型为A::*,例如,如下类: class Point3d { pub...

2016-09-05 22:27:40

阅读数 296

评论数 0

[读书笔记] 深入探索C++对象模型-第三章 Data语义学(中)

继续整理第三章的内容(以下部分图片来自于原书): 1. 在只有继承没有多态的情况下,子类是的内容就是父类加上子类特有的数据成员,例如,对于如下两个类,Point2d和Point3d,后者公有继承自前者,此时的数据布局如下所示: 在某些情况下,把一个类分解成多层,可能会导致类所占用空间的膨胀,例...

2016-09-04 23:18:08

阅读数 396

评论数 0

[读书笔记] 深入探索C++对象模型-第二章《构造函数语义学》(下)

继续整理第二章节剩下的内容。 1. 对于明确d

2016-08-25 00:05:46

阅读数 355

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭