动机: 间接访问变量:支持更灵活的数据获取方式,如lazy Initialization(意思是只有用到值时,才对它进行初始化。) 直接访问变量:代码比较容易阅读,不需要停下来说:啊,这只是个取值函数。 选择:1、代码规范,按照团队中大多数人的做法去做。 2、个人
动机:
“间接访问变量”:支持更灵活的数据获取方式,如lazy Initialization(意思是只有用到值时,才对它进行初始化。)
“直接访问变量”:代码比较容易阅读,不需要停下来说:“啊,这只是个取值函数”。
选择:1、代码规范,按照团队中大多数人的做法去做。
2、个人比较喜欢“直接访问变量”,直到这种方式带来麻烦为止。
martin(作者)的例子:你想获取superclass中的field,却又想在subclass中将该field改为计算后的值,这就最该使用Self Encapsulate Field。
我自己的例子:我一般会把field设置成private,如果外部变量,需要用到此field的时候,我就会用Self Encapsulate Field。或者field的值有变化的时候,用Self Encapsulate Field。
Replace Data Value with Object
状况:如果你的某个基本类型的field,需要额外的数据和行为,那么将此field变成对象。