C++
俞凡 DeepNoMind
Group Director @ Mavenir Systems
展开
-
《大规模C++程序设计》读书笔记18
定义34:满足下列条件的抽象类是一个协议类:(1)它既不包含也不继承那些包含成员数据、非虚拟函数或任何种类的私有(或保护的)成员的类;(2)它有一个非内联虚析构函数(定义了一个空实现);(3)所有成员函数(除了包含被继承函数的析构函数)都声明为纯虚函数,并任其处于未定义的状态。原则57:一个协议类几乎是一个完美的绝缘器。原则58:一个协议类可以用来消除编译时依赖和连接时依赖。原创 2008-01-29 20:30:00 · 372 阅读 · 0 评论 -
《大规模C++程序设计》读书笔记1
C++在C的基础上更加强了重用,但重用是有开销的,而且重用蕴含耦合,而耦合是我们不希望看到的,没有保障的重用应该避免。 质量的衡量标准有多个方面:可靠性、功能性、可用性、可维护性以及性能。我认为:这指的是狭义的质量,广义的质量应该包括三个方面:软件产品的质量(即狭义的质量)、流程的质量(CMMI,SixSigma,etc)、团队的质量。平时提到的质量,大多指的是狭义的软件产原创 2008-01-07 22:09:00 · 647 阅读 · 0 评论 -
《大规模C++程序设计》读书笔记3
主要设计规则1:保持类数据成员的私有性。定义4:若不能通过某个类的逻辑接口编程访问或检测到其包含的实现细节(类型、数据或函数),则称这些实现细节被该类封装了。如果认为数据成员不需要被封装,可以通过使用关键字struct来表示不需要封装的结构。应该将protect接口看成和public接口一样,只不过增加一个派生工作,即可将protect接口转换为public接口。主要设计规则2原创 2008-01-07 23:09:00 · 614 阅读 · 0 评论 -
《大规模C++程序设计》读书笔记2
定义1:一个声明将一个名称引入一个程序;一个定义提供了一个实体(例如,类型、实例、函数)在一个程序中的唯一描述。在给定作用域中,声明可以重复,定义只能有一个。例外:类的成员函数和静态数据成员,虽然不是定义,但在一个类声明中也不可以重复。Class NoGood {static int i; // declarationstatic int i; // illegal in原创 2008-01-07 22:39:00 · 610 阅读 · 0 评论 -
《大规模C++程序设计》读书笔记4
主要设计规则3:在.h文件的文件作用域内避免使用自由函数(运算符函数除外);在.c文件中避免使用带有外部连接的自由函数(包括运算符函数)。(同主要设计规则2)自由函数应该包含在一个结构中,这样只有结构名可能会有冲突危险。自由运算符重载函数不能放在结构中。主要设计规则4:在.h文件的文件作用域内避免使用枚举类型、typedef和常量数据。C++支持嵌套类型,因此可以在结构中定义枚举类原创 2008-01-08 21:11:00 · 787 阅读 · 0 评论 -
《大规模C++程序设计》读书笔记5
原则2:逻辑设计只研究体系结构问题;物理设计研究组织问题。定义5:一个组件(component)就是物理设计的最小单位。一个组件包含一组逻辑设计的子集,类、函数、枚举等等都是构成组件的逻辑实体。每个类定义都应该严格的只驻留在一个组件中。一般的,一个组件由一个头文件和一个实现文件组成。原则3:一个组件就是设计的适当的基本单位。定义6:一个组件的逻辑接口就是可被客户通过编程原创 2008-01-09 22:25:00 · 724 阅读 · 0 评论 -
《大规模C++程序设计》读书笔记6
定义10:如果编译或连接组件y时需要组件x,则组件y DependsOn组件x。DependsOn关系是一种物理关系,而IsA、Uses等关系是逻辑关系。物理关系作用于物理实体(文件、组件、包)之间,逻辑关系作用于逻辑实体(类、函数)之间。定义11:如果编译y.c时需要x.h,那么组件y展示了对组件x的编译时依赖。定义12:如果对象文件y.o(通过编译y.c产生)包含未定义的符号,原创 2008-01-10 22:55:00 · 485 阅读 · 0 评论 -
《大规模C++程序设计》读书笔记7
指导方针7:避免把(远距离的)友元关系授权给定义在另一个组件中的一个逻辑实体。原则10:一个组件内部的友元关系是该组件的一个实现细节。定义13:若通过一个组件的逻辑接口不能通过程序访问或探测到该组件包含的一个实现细节(类型、数据或函数),则称这些实现细节被该组件封装了。原则11:为定义在同一个组件内的类授予(局部的)友元关系不会破坏封装。从组件的角度来说,一个操作(函数、运算符重载原创 2008-01-12 22:04:00 · 528 阅读 · 0 评论 -
《大规模C++程序设计》读书笔记8
定义14:回归测试指的是这样的规程:运行一个程序(该程序被给定了一个固定期望结果集合的特定输入),比较其结果,以便检验程序从一个版本升级到另一个版本时是否能够继续如所期望的那样运行。基于启发式技术的软件、使用异步通信的系统,系统行为具有随机性,较难进行回归测试。原则15:对于测试来说,软件中的一个类类似于现实世界中的实例。原则16:对整个设计的层次结构进行分布式测试,比只在最高层接口进原创 2008-01-13 16:59:00 · 516 阅读 · 0 评论