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

移除设值函数(Remove Setting Method)

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

一、动机

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

二、做法

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

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

3、编译,测试

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

5、编译,测试

时间: 2024-07-30 12:17:41

重构——51移除设值函数(Remove Setting Method)的相关文章

重构——37移除控制标记(Remove Control Flag)

移除控制标记(Remove Control Flag) 在一系列表达式中,某个变量带有"控制标记作用":以break语句或者return语句取代控制标记 一.动机 单一出口的原则会大大降低代码的可读性 二.做法 1.找出让你跳出这段程序的控制标记值 2.找出对标记变量赋值的语句,代以恰当的break语句或continue语句 3.每次替换后,编译并测试 4.在未能提供break和continue的编程语言中 5.使用Extract Method,恰当的return

重构——10搬移函数(Move Method)

搬移函数(Move Method) 你的程序中,有个函数与其所驻类之外的另一个类进行更多的交流:调用后者,或者被后者调用.在该函数最常引用的类中建立一个有着类似行为的新函数.将就函数变成一个单纯的委托函数,或是将旧函数完全移除 一.动机 减少类之间的耦合,是系统中的类更简单,更干净利落的完成系统交付的任务 二.做法 1.检查源类中被原函数所使用的一切特性,考虑它们是否也应该被搬移.考虑是否要将使用相同特性的函数一并搬移 2.检查源类的超类和子类,看看是否有该函数的其他声明 3.在目标类中声明这个

assword ield-JPasswordField中如何重设值为没有

问题描述 JPasswordField中如何重设值为没有 比如说点重置,则值为没有.................. 解决方案 有几种方法说几种,在线等

mysql-Mysql中load data infile时能否为其它字段设值

问题描述 Mysql中load data infile时能否为其它字段设值 比如我现在有一张表,字段有a.b.c.d四个,load data时的txt文件只包含3个字段(a.b.c)的值,在导入的同时,我能为每条记录的d字段设置一个值吗?(比如操作的用户名等) 解决方案 [MySQL5.0]Load data infile 时遇到的奇怪问题mysql load data infile的使用mysql load data infile的使用 解决方案二: http://www.2cto.com/d

引用返回值 引用形参-在C++中,很简单的引用返回值函数,可以返回两个引用的相加和吗

问题描述 在C++中,很简单的引用返回值函数,可以返回两个引用的相加和吗 #include using namespace std; void main() { int& sum(int &a,int& b); int a=1,b=2; sum(a,b)+=1; } int &sum(int & a,int & b) { return a+b; } 在VC6.0中编译出错error C2440: 'return' : cannot convert from

javascript-如何用Js实现文本框只能输入数字且只能输入1-15号数字,且大于15设值为15,小于1设值为1

问题描述 如何用Js实现文本框只能输入数字且只能输入1-15号数字,且大于15设值为15,小于1设值为1 如何用Js实现文本框 ①只能输入数字 ②只能输入1-15号数字 ③且大于15设值为15,小于1设值为1? ④不能支持粘贴操作, 原本用正则表达式表示为如下,只能实现仅输入两位数字,不能粘贴,不能输入其他数字以外字符 用正则实现了①④如何实现②③???? <input type="text" onkeyup="this.value=this.value.replace

多线程设值 取值 问题

问题描述 多线程设值 取值 问题 import java.util.HashMap; import java.util.Map; import java.util.Random; public class ThreadMap { private static Map map = new HashMap(); public static void main(String[] args) { for (int i = 0; i < 2; i++) { new Thread(new Runnable(

spring mvc-springmvc model设值以后如何在jsp页面引用呢?

问题描述 springmvc model设值以后如何在jsp页面引用呢? controller代码 @RequestMapping(method = RequestMethod.GET) public String update(Model model) { System.out.println("service update"); model.addAttribute("greetings", "I came from Model not ModelAt

SQLserver标量值函数使用例子

举个例子,当用户删除一个节点的时候,是需要将当前节点下的所有子节点都删掉,如果程序只传一个当前节点,那就需要写一个函数来得到当前节点下的所有子节点,这些子节点的信息就可以放到一个表中返回.  代码如下 复制代码 ALTER FUNCTION testGetSubNodes ( -- Add the parameters for the function here @nodeId int ) RETURNS @t TABLE ( -- Add the column definitions for