动机
如果一个函数可以通过其他的途径获得参数值,那么它就不应该通过参数取得该值
如果你能有其他的方法或者相同的计算值
如果要在对调用对象的引用的其他对象上调用方法
某些参数总是很自然的同时出现
以一个对象取代这些参数
class Customer{
amountInvoicedIn (start : Date, end : Date)
amountReceivedIn (start : Date, end : Date)
amountOverdueIn (start : Date, end : Date)
}
to
class Customer{
amountInvoicedIn (: DateRange)
amountReceivedIn (: DateRange)
amountOverdueIn (: DateRange)
}
动机
减少参数列表的长度
使代码看的更加简洁
类中的某个字段应该在对象创建时被设值,然后就不再改变
去掉该字段的所有设值函数
class Employee{
setImmutableValue()
}
to
class Employee{
??\_(ツ)_/??
}
动机
确保你的清晰的目的 : 如果你想你的字段在创建之后就不要被改变了,你就不应该提供一个setting方法用于确保你的字段是否不被改变的
有一个函数,从来没有被其他任何类用到
将这个函数修改为 private
class Employee{
public method()
}
to
class Employee{
private method()
}
动机
如果一个方法不需要被外部调用,那么就应该讲这个方法隐藏
在创建对象时不仅仅是做简单的健够动作
将构造函数替换为工厂函数
Employee (int type) {
_type = type;
}
to
static Employee create(int type) {
return new Employee(type);
}
创建一个对象依赖于其子类,构造函数只能返回单一类型的对象,因此你需要将构造函数替换为一个工厂函数
某个函数返回的对象,需要由调用者执行向下转型
将向下转型动作转移到函数中
Object lastReading() {
return readings.lastElement();
}
to
Reading lastReading() {
return (Reading) readings.lastElement();
}
动机
将一个方法最有效的返回值进行返回给函数的调用者
如果类型是准确的,检查使用这个对象的方法并提供一个更为有效的方法
某个函数返回一个特定的代码,用以表示某种错误情况
改用异常将其抛出去
int withdraw(int amount) {
if (amount > _balance)
return -1;
else {
_balance -= amount;
return 0;
}
}
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-89441-21.html