类是一切面向对象设计的基础。一个好的类应该提供干净、清晰的接口,具备低耦合、高内聚的特点,并且很好地展现封装、继承、多态、模块化等特性
原则一:类成员应该是私有的(private)
每个类不应让其它人插手其内部实现,所以类的成员不应该是public的;甚至连派生类也不应插手基类的内部,所以protected也应避免
例外:属于接口,而不属于实现的某些常量成员可以不受此规则限制,也就是说可以是protected甚至是public的,因为不论类内类外都不会修改这些成员,除非强制/显式去掉只读属性,而这是要极力避免的。
原则二:保持对象状态休息的持续性。
确保对象的状态休息(成员变量)在(对象内)整个生命争取都是有效的。
原则三:提高类内聚合度
高内聚是指在进行类设计时要强调专注于一价件事或一个目标,并把它做好。
原则四:降低类间的耦合度(即类间相互依赖程度)
因为类间的耦合度越高,独立性越差,移植、修改能力越差,且易出错,并且降低了类的模块化和封装性,因为每个类的实现都与其它类相关。
原则五:努力使类的接口少而完备
原则六:保持类的不同接口在实现原则上的一致性。
原则七:保持不同类的接口在实现原则上的一致性。
原则八:避免为每个类成员提供访问函数。
原则九:不要在类定义时提供成员函数体
定义和实现要分开,使用者不关心实现,且在类定义中的函数体自动是inline方式,将来若要该函数成为非inline方式,比分开写要麻烦。
原则十:函数声明(而不是实现)时定义参数的缺省值
原则十一:恰当选择成员函数、全局函数和友元函数。
虚函数必为成员函数,因为非成员函数不能为虚。
原则十二:防范、杜绝潜在的二义性
原则十三:显式禁止编译器自动生存不需要 函数 。
原则十四:当遇到错误。对象应能应对有度
原则十五:用嵌套类的方法减少匿名命名空间类的数量