cc-6

来源:互联网 发布:网络剧播放量排行榜 编辑:程序博客网 时间:2024/05/01 11:23

核对表:类的质量

   抽象数据类型

▲    你是否把程序中的类都看作是抽象数据类型了?是否从这个角度评估它们的接口了?

抽象

▲    类是否有一个中心目的?

▲    类的命名是否恰当?其名字是否表达了其中心目的?

▲    类的接口是否展现了一致的抽象?

▲    类的接口是否能让人清楚明白地知道该如何使用它?

▲    类的接口是否足够抽象,使你能不必顾虑它是如何实现其服务的?你能把类看作黑盒子吗?

▲    类提供的服务是否足够完整,能让其他类无须动用其内部数据?

▲    是否已从类中除去无关信息?

▲    是否考虑过把类进一步分解成组件类?是否已尽可能将其分解?

▲    在修改类时是否维持了其接口的完整性?

封装

▲    是否把类的成员的可访问性降到最小?

▲    是否避免暴露类中的数据成员?

▲    在编程语言所许可的范围内,类是否已尽可能地对其他的类隐藏了自己的实现细节?

▲    类是否避免对其他使用者,包括其派生类会如何使用它做了假设?

▲    类是否不依赖于其他类?它是松散耦合的吗?

继承

▲    继承是否用来建立”是一个/ is a”的关系?也就是说,派生类是否遵循了LSP(Liskov替换原则)?

▲    类的文档中是否记述了其继承策略?

▲    派生类是否避免了“覆盖”不可覆盖的方法?、

▲    是否把公用的接口、数据和行为都放到尽可能高的继承层次中了?

▲    继承层次是否很浅?

▲    基类中所有的数据成员是否都被定义为private而非protected的了?

跟实现相关的问题

▲    类中是否只有大约7个或者更少的数据成员?

▲    是否把类直接或间接调用其他类的子程序的数量减到最少了?

▲    类是否只在绝对必要时才与其他的类相互协作?

▲    是否在构造函数中初始化了所有的数据成员?

▲    除非拥有经过测量的、创建浅层副本的理由,类是否被设计为当作深层复本使用?

与语言相关的问题

▲    你是否研究过所用编程语言里和类相关的各种特有问题?