User user = new User().setName("West_Link").setAge(3).setPhoneNumber(123333);
只需要为那些函数增加一个 User 对象的返回值即可,如下:
public User setName(String name){
this.name = name;
return this;
}
第八计:临时变量在用到时才声明
很多人喜欢在函数的开头把所有要用到的临时变量都声明了,我认为这种方式有以
下几个缺点:
1、不利于代码的阅读,需要经常在变量的使用处和变量的声明处跳转,不方便。
2、容易造成资源的浪费,因为有些对象的初始化是比较耗费资源的,而函数可能在用到
该对象之前返回。
3、不利于函数的拆分。
所以,我们应该尽可能降低临时变量的作用域,那样它能“捣乱“的范围就被缩至最小了。
第九计:保持类的公有函数粒度最小化
一个类的公有函数不应该过多,那样会使类变得臃肿、不易使用,我认为最佳状态
是绝大部分公有函数不能被拆分,也就是说,不存在那些通过其他公有函数也能达到目的
的函数,例如下面的类:
public class StringArray{
// 获取数组的大小
public int getSize();
// 判断数组是否为空
public boolean isEmpty();
// 将数据添加到数组的某个索引
public void add(String value,int index);
// 将数据添加到数组的末尾
public void addToLast(String value);
// 将数据添加到数组的起始位置
public void addToFirst(String value);
}
StringArray 其实只需要两个公有函数即可,即 getSize 和 add,因为 isEmpty 可以通
过 getSize 来达到相同的目的:getSize() == 0。类似地,addToLast、addToFirst 也可以通过
add 来实现。不过,如果类的公有函数比较少,而且类似 isEmpty 类似的需求经常被用到,
那么保留这些公有函数还是值得的。
第十计:将可访问性降至最低
面向对象中的封装性使得我们可以隐藏类或者接口的实现细节,所以,为了让程序
更易维护、接口或者类的使用更加简单,我们应该尽可能降低成员变量或者成员函数的可
访问性,辅助函数一定要声明为私有的,确保只将接口函数声明为公有的,如果该辅助函
数可能会被子类用到,则可以声明为保护的。辅助类也应声明为私有的,对于成员变量则