重构——51移除设值函数(Remove Setting Method)

简介: 移除设值函数(Remove Setting Method):类中的某个字段应该在对象创建时被设值,然后就不再改变;去掉该字段的所有设值函数

移除设值函数(Remove Setting Method)

类中的某个字段应该在对象创建时被设值,然后就不再改变;去掉该字段的所有设值函数

一、动机

不希望对象被改变,就不要提供设值函数,同时final之

二、做法

1、检查设值函数被使用的情况,看它是否只被构造函数调用,或者被构造函数所调用的另一个函数调用

2、修改构造函数,使其直接访问设值函数所针对的那个变量

3、编译,测试

4、移除这个设值函数,将它所针对的字段设置为final

5、编译,测试

目录
相关文章
重构——10搬移函数(Move Method)
搬移函数(Move Method):你的程序中,有个函数与其所驻类之外的另一个类进行更多的交流:调用后者,或者被后者调用。在该函数最常引用的类中建立一个有着类似行为的新函数。将就函数变成一个单纯的委托函数,或是将旧函数完全移除
3476 0
|
12天前
|
人工智能
D. Remove One Element(前缀最大+简单状态机)
D. Remove One Element(前缀最大+简单状态机)
|
4月前
|
JavaScript 前端开发
如何巧妙使用`Object.keys`方法将`JS`的一个对象的特定的值赋值给另外一个对象
如何巧妙使用`Object.keys`方法将`JS`的一个对象的特定的值赋值给另外一个对象
18 0
|
8月前
|
测试技术 API
避免修改构造函数输入参数引起的 breaking change
避免修改构造函数输入参数引起的 breaking change
39 0
|
10月前
|
存储 SQL API
VB中判断空的几种方法,Null, Missing, Empty, Nothing, vbNullString区别
VB中判断空的几种方法,Null, Missing, Empty, Nothing, vbNullString区别
|
Java 编译器
规避Variable used in lambda expression should be final or effectively final而引发了方法参数值拷贝的问题
规避Variable used in lambda expression should be final or effectively final而引发了方法参数值拷贝的问题
159 0
|
JSON 前端开发 JavaScript
@RequestBody 接收数组、List 参数、@Deprecated 标记废弃方法
@RequestBody 接收数组、List 参数、@Deprecated 标记废弃方法
@RequestBody 接收数组、List 参数、@Deprecated 标记废弃方法
Kyro - Output 类中没有 clear() 方法
Kyro - Output 类中没有 clear() 方法
70 0
|
网络架构
CodeIgniter报错: You must use the "set" method to update an entry
I'm using codeigniter/datamapper to develop an inviocing application and I'm getting an error that i don't understand.
2089 0
【错误记录】Groovy 注入方法报错 ( Cannot add new method [hello] for arguments [[]]. It already exists )
【错误记录】Groovy 注入方法报错 ( Cannot add new method [hello] for arguments [[]]. It already exists )
128 0
【错误记录】Groovy 注入方法报错 ( Cannot add new method [hello] for arguments [[]]. It already exists )