重构——45将查询函数和修改函数分离(Separate Query from Modifier)

简介: 将查询函数和修改函数分离(Separate Query from Modifier):某个函数即返回对象状态,又修改对象状态;建立两个不同的函数,其中一个负责查询,另一个负责修改

将查询函数和修改函数分离(Separate Query from Modifier)

某个函数即返回对象状态,又修改对象状态;建立两个不同的函数,其中一个负责查询,另一个负责修改

一、动机

一条好规则:任何有返回值的函数,都不应该有看得到的副作用

二、做法

1、新建一个函数,令它的返回值与原函数相同

2、修改原函数,令它调用查询函数,并返回获得的结果

3、编译,测试

4、将调用原函数的代码改为调用查询函数。然后,在调用查询函数的那一行之前,加上对原函数的调用。每次修改后,编译并测试

5、将原函数的返回值改为void,并删掉其中所有的return语句

目录
相关文章
|
7月前
|
XML SQL JSON
query 与 params:选择正确的参数传递方式
query 与 params:选择正确的参数传递方式
|
Java 数据库
JPA通用策略生成器(@GeneratedValue 四种标准用法为TABLE, SEQUENCE, IDENTITY, AUTO)
JPA通用策略生成器(@GeneratedValue 四种标准用法为TABLE, SEQUENCE, IDENTITY, AUTO)
209 0
|
存储 人工智能 前端开发
动态尺寸模型优化实践之Shape Constraint IR Part II
在本系列分享中我们将介绍BladeDISC在动态shape语义下做性能优化的一些实践和思考。本次分享的是我们最近开展的有关shape constraint IR的工作,Part II 中我们将介绍shape constraint IR的设计,实现以及一些初步的实验结果
|
人工智能 编译器 云计算
动态尺寸模型优化实践之Shape Constraint IR Part I
在本系列分享中我们将介绍BladeDISC在动态shape语义下做性能优化的一些实践和思考。本次分享的是我们最近开展的有关shape constraint IR的工作,Part I 中我们将介绍问题的背景,面临的主要挑战和以及我们做shape constraint IR的动机。
SAP MM 条件类型中PB00的‘Group Cond.‘标记的作用?
SAP MM 条件类型中PB00的‘Group Cond.‘标记的作用?
SAP MM 条件类型中PB00的‘Group Cond.‘标记的作用?
重构——49以函数取代参数(Replace Parameter with Methods)
以函数取代参数(Replace Parameter with Methods):对象调用某个参数,并将结果作为参数,传递给另一个函数,而接受该参数的函数本身也能够调用前一个函数;让参数接受者去除该项参数,并直接调用前一个参数
1740 0
重构——50引入参数对象(Introduce Parameter Object)
引入参数对象(Introduce Parameter Object):Range模式;某些参数总是很自然的同时出现;以一个对象取代这些参数
1782 0
重构——43添加参数(Add Parameter)
添加参数(Add Parameter):某个函数需要从调用端得到更多信息;为此函数添加一个对象,让该对象带进函数所需信息
1520 0
重构——47以明确函数取代参数(Replace Parameter with Explicit Methods)
以明确函数取代参数(Replace Parameter with Explicit Methods):你有一个函数,其中完全取决于参数值而采取不同的行为;针对该参数的每一个可用值,建立一个独立函数
1872 0