C++编程风格
2017-05-16 16:18
197 查看
C++编程风格
C编程风格抽象
一致性
不必要的继承
虚函数
运算法的重载
包装
效率
案例研究
抽象
对象的行为是指它对外部激励的反应如果派生类之间的额区别在于属性,则用数据成员来表示,如果在于行为,则用虚函数来表示
如果通过共有继承来产生派生类,那么这个派生类应该是其基类的特化。
多态并不是所有程序设计问题的解决方案
一致性
构造哈数应该是的对象处于明确定义的状态,不仅要分配内存空间,更要初始化值。首先在构造函数中建立起类的不变形,然后再其他成员函数中维持这个不变性。
用一致的方式来定义对象的状态。
类的接口定义应该是一致的——避免产生困惑。
对于每个new 操作,都要有相应的delete操作。
避免对从不使用的状态信息进行计算和存储。
用一个通过的函数来代替重复的表达式序列。
不必要的继承
识别出对实现的继承,可以使用私有基类或者(更好的方法是)使用成员对象。使用默认参数的形式来代替函数重载的形式。
虚函数
派生类在处理继承而来的状态时必须与基类保持一致。如果公有基类中没有定义虚析构函数,那么在所有的派生类或者派生类的数据成员中都应该没有定义析构函数。
通常情况下,基类的析构函数都应该被声明为虚函数。
将共同的行为迁移到基类中。
降低耦合性——将类之间的交互最小化。
没有那个类是完美的,过窄的设计要好过过宽的设计。
运算法的重载
重载运算符的含义必须是自然的,而不是为了展示程序员的聪明。重载运算符必须能够与其他的运算符进行正确的交互。
保证重载运算符的行为是一致的。
识别出对实现的继承,可以使用私有基类或者(更好的方法是)使用成员对象。
包装
需要知道从函数中返回的指针的有效生存期。独立的对象应该由独立的行为。
不要对某些基本信息进行完全的封装,要使得这些信息可以通过某些方法来访问。
效率
不能通过主观臆测就作出判断,应该通过执行性能分析的结果来找问题。完整的接口有助于实现高效的客户代码。
案例研究
记住结束空字符的存在,length= strlen+1不要使用构造函数来出事话静态数据成员。
每个类都应该只有唯一的内聚的功能。
将类设计成抽象数据类型而不是模块类。
##多重继承
控制访问不能解决二义性问题。
在使用虚基类之前,要彻底的理解它。
不要试图从你正在使用的编译器中来学习多重继承的语义。
避免人为的讲一个类限制为只能作为基类。
如果多重继承的层次结构中存在着析构函数,那个每个基类的析构函数都应该是虚函数。
如果客户对象中需要包含某钟服务,那么应该使用成员对象,而不是继承。
一个类应该能够描一组对象。
相关文章推荐
- C++编程 - 编程风格
- c++编程风格----读书笔记(1)
- c++编程风格----读书笔记(2)
- C++编程风格1——头文件
- Google C++编程风格指南:格式
- C++编程风格2——命名方式
- Google C++编程风格整理(一)
- Google C++编程风格整理(二)
- c++编程风格和命名规范
- Google C++编程风格
- ubuntu配置vim为windows下C++编程风格
- googl中java、c++编程风格
- 仆人式管理风格
- RDIFramework.NETV2.9版本 Web新增至14套皮肤风格+三套界面组合(共42套皮肤组合)
- 蚂蚁金服antd-Table-JSX风格的API
- JQuery实现简单的QQ风格
- 下推栈实现(c++编程思想 p136)
- springmvc restful风格遇到的问题
- Metro风格应用程序的UI基本概念
- C风格字符串 C++string对象 字符串常量 字符串直接量