java最基础类的设计之判断一个类是不是一个设计良好的类
2012-03-09 19:59
393 查看
抽象数据类型:
是否把程序中的类都看做是抽象数据类型了?是否从这个角度评估它们的接口了?
抽象:
类是否有一个中心目的
类的命名是否恰当?其名字是否表达了其中心目的?
类的接口是否展现了一致的抽象?
类的接口是否能让人清楚明白的知道该如何用它?
类的接口是否够抽象,使你能不必顾虑它是如何实现其服务的?能把类看做黑盒吗?
类提供的服务是否足够完整,能让其他类无需动用其内部数据?
是否已从类中除去无关信息?
是否考虑过把类分解为组件类?是否已尽可能将其分解?
在修改类时是否维持了其接口的完整性?
封装:
是否把类的成员的可访问性降到最小?
是否避免暴露类中的数据成员?
类是否已尽可能地对其他类隐藏了自己的实现细节?
类是否避免对其使用者,包括其派生类会如何使用它作出了假设?
类是否不依赖其他类?它是松散耦合吗?
继承:
继承是否是用来建立“是一个/is a”的关系?
类的文档是否记叙了其继承策略
派生类是否避免了“覆盖”不可覆盖的方法?
是否把公用的接口、数据和行为都放到尽可能高的继承层次中了?
继承层次是否很浅
基类中所有数据成员是否都被定义为private而非protected的了?
跟实现相关的其他问题
类中是否只有大约7个或更少的数据成员?
是否把类直接或间接调用其他类的子程序的数量减到最少了?
类是否只在绝对必要时才与其他的类相互协作?
是否在构造函数中初始化了所有的数据成员?
详细信息请参考《代码大全2》
是否把程序中的类都看做是抽象数据类型了?是否从这个角度评估它们的接口了?
抽象:
类是否有一个中心目的
类的命名是否恰当?其名字是否表达了其中心目的?
类的接口是否展现了一致的抽象?
类的接口是否能让人清楚明白的知道该如何用它?
类的接口是否够抽象,使你能不必顾虑它是如何实现其服务的?能把类看做黑盒吗?
类提供的服务是否足够完整,能让其他类无需动用其内部数据?
是否已从类中除去无关信息?
是否考虑过把类分解为组件类?是否已尽可能将其分解?
在修改类时是否维持了其接口的完整性?
封装:
是否把类的成员的可访问性降到最小?
是否避免暴露类中的数据成员?
类是否已尽可能地对其他类隐藏了自己的实现细节?
类是否避免对其使用者,包括其派生类会如何使用它作出了假设?
类是否不依赖其他类?它是松散耦合吗?
继承:
继承是否是用来建立“是一个/is a”的关系?
类的文档是否记叙了其继承策略
派生类是否避免了“覆盖”不可覆盖的方法?
是否把公用的接口、数据和行为都放到尽可能高的继承层次中了?
继承层次是否很浅
基类中所有数据成员是否都被定义为private而非protected的了?
跟实现相关的其他问题
类中是否只有大约7个或更少的数据成员?
是否把类直接或间接调用其他类的子程序的数量减到最少了?
类是否只在绝对必要时才与其他的类相互协作?
是否在构造函数中初始化了所有的数据成员?
详细信息请参考《代码大全2》
相关文章推荐
- java实现输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果
- 22、JAVA 判断一个数是不是质数[中兴笔试]
- Java判断一个数是不是素数
- Java 判断 一个点是不是在一个多边形围起来的区域内
- Java传入一个字符判断是不是日期格式
- JAVA 判断一个字符串是不是一个合法的日期格式format.setLenient(false);
- 一个高效,良好的java验证码设计思路
- Java算法题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
- 【java】判断一个数是不是2的N次方
- JAVA中 怎么判断输入的字符串是不是一个数字
- 实训JAVA语言设计——从键盘输入一个年份,判断是否是闰年
- Java判断一个数是不是素数
- 实训JAVA语言设计——产生一个2-K之间的随机整数,判断一个数是否是素数
- JAVA判断一个数是不是素数
- JAVA 判断一个字符串是不是一个合法的日期格式format.setLenient(false);
- Java 求1-100以内的所有素数,判断一个数是不是素数。Java代码实现附测试结果图
- JAVA 判断一个字符串是不是自定义的日期格式
- JAVA 判断一个字符串是不是一个合法的日期格式
- JAVA 判断一个字符串是不是一个合法的日期格式
- JAVA 判断一个字符串是不是一个合法的日期格式