动机
当对象引用需要互相引用的时候,你应该采用这种方法
当你有个双向联系的类,但是在后期一个类不在需要另一个类中的属性了
扔掉不需要的联系
动机
当双向联系不在需要,减少复杂度,移除僵尸对象,消除相互依赖
你有一个特定含义的字符串
创建一个常量,名称根据它的意思命名然后替换那个数字
double potentialEnergy(double mass, double height) {
return mass * 9.81 * height;
}
to
double potentialEnergy(double mass, double height) {
return mass * GRAVITATIONAL_CONSTANT * height;
}
static final double GRAVITATIONAL_CONSTANT = 9.81;
动机
避免使用魔法数字
这里有一个公共的字段
将它改为私有的并提供访问函数
public String _name
to
private String _name;
public String getName() {
return _name;
}
public void setName(String arg) {
_name = arg;
}
动机
你应该将你数据公开
一个返回几个的方法
确保返回一个只读的影像对象,然后提供添加和移除方法
class Person {
Person (String name){
HashSet set new HashSet()
}
Set getCourses(){}
void setCourses(:Set){}
}
to
class Person {
Person (String name){
HashSet set new HashSet()
}
Unmodifiable Set getCourses(){}
void addCourses(:Course){}
void removeCourses(:Course){}
}
动机
封装减少了拥有类和和其客户端的耦合
getter 方法不应该返回集合的本身
getter方法应返回对集合进行操作的内容并隐藏其中不必要的细节
这个几个不应该有setter方法,只能添加和移除操作
你必须面对一个记录值在传统的编程环境中
使用一个僵尸数据对象代替记录值
动机
复制一个传奇代码
使用传统的API编程和来代替一个记录值
一个类拥有数字类别码,不能影响其行为
使用类来代替数字
class Person{
O:Int;
A:Int;
B:Int;
AB:Int;
bloodGroup:Int;
}
to
class Person{
bloodGroup:BloodGroup;
}
class BloodGroup{
O:BloodGroup;
A:BloodGroup;
B:BloodGroup;
AB:BloodGroup;
}
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-89441-14.html
不会再拖了
谁占上风