将临时变量内联化 & 以查询代替临时变量

原创 2004年10月19日 09:44:00

Inline Temp(将临时变量内联化)与 Replace Temp with Query(以查询代替临时变量)

Inline Temp:

Summary:

  • 你有一个临时变量,只被一个简单表达式赋值一次,而它妨碍了其他重构方法。

Tips:

  • Inline Temp多半是作为Replace Temp with Query的一部分来使用。
  • 这类临时变量必须只被赋值一次。

 

Replace Temp with Query:

Summary:

  • 你的程序以一个临时变量保存某一表达式的运算结果。

Tips:

  • 这些临时变量只在所属函数内可见,并只为所属函数所用。
  • Replace Temp with Query能为Extract Method处理部分局部变量提供实践性前提。
  • 跟Inline Temp的临时变量一样,这类变量也必须只被赋值一次。
  • 如果该临时变量从循环里面保存累加信息,而循环也相对简单,你可以把临时变量与循环体一起提炼到一个单独的Query里面。

 

Comments by Allen Lee:

  • 在使用Replace Temp with Query时,如果被提炼的变量(有时会外加一些额外的验证或查询代码)只对class内部可见,可以用传统的方法提炼到一个private函数,如果这些奖杯提炼的临时变量还需要依靠其他数据,可以试着把这些数据以参数的形式传提到函数里面,也就是重载函数。
  • 如果将来发现不需要传入参数的Query需要对class外部公开,可以保留函数形式的Query,也可以进一步使用C#的property特性来对外公开这些数据。若Query有重载函数,保留函数形式将有比较好的效果,否则property形式的Query将是代码更加直观。
  • C# 2.0的property将提供setter和getter不同accessibility(访问权限)的功能,于是,你可以是的Query对外只读,而对内却可读可写。

 

重构笔记——内联临时变量

本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/42167015         在上一篇文章中介绍了“...
  • pistolove
  • pistolove
  • 2014年12月31日 08:15
  • 2589

以查询取代临时变量

本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/42386305         在上一篇文...
  • u012422833
  • u012422833
  • 2015年01月04日 17:42
  • 456

重构笔记——以查询取代临时变量

本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/42167015         在上一篇文章中介绍了“...
  • pistolove
  • pistolove
  • 2015年01月04日 07:40
  • 2549

重构方法进阶(十二):代码常用重构方法(临时变量内联化&以查询取代临时变量)

若有临时变量只用个表达式赋值了一次,并且这个变量妨碍其它重构。将对这个变量的所有引用换成这个表达式。 大多数内联临时变量是作为“以查询方法替换临时变量”重构方法的一部分,这才是真正目的。一般临时变量...
  • zxcvg
  • zxcvg
  • 2011年08月09日 19:27
  • 1222

6.3 Inline Temp(内联临时变量)

概括 一个临时变量,只被一个简单表达式赋值一次,而它妨碍了其他重构方法。 将所有对该变量的引用替换为对它赋值的那个表达式本身。     例子 double basePrice ...
  • tanhaiyuan
  • tanhaiyuan
  • 2013年11月27日 13:22
  • 892

mysql设置临时变量一次性查出多层依赖的sql语句

在实际工作中,我们常常会遇到这种情况,想要查的sql和已知的数据中间要通过许多的中间sql依赖查询。开始的方法是先执行已知数据的sql,查出想要的中间数据,以此类推,再执行中间sql,直到查出最终要的...
  • mingliangniwo
  • mingliangniwo
  • 2015年03月23日 15:47
  • 2160

MYSQL:巧用临时变量做分组统计

题目: 一张测试成绩表(test_score_tbl)中包括班级(class), 姓名(name), 分数(score) 三个字段, 求用SQL文检索出每个班级的前三名。 答案: 按照班级(...
  • lnpypy
  • lnpypy
  • 2016年09月06日 10:20
  • 659

Inline Temp( 将临时变量内联化 )

Inline Temp( 将临时变量内联化 )double basePrice = anOrder.basePrice();return ( basePrice > 1000 )==>return (...
  • bendan999999999
  • bendan999999999
  • 2007年08月10日 09:18
  • 530

临时变量的一些细节

一 :临时变量产生之值传递::(值传递包括指针传递)1 。非引用的参数传递 :实参有自己的变量空间,当开始调用函数时, 形参并不会自己申请内存单元,在传递(内置类型)实参时,先将实参的值放到寄存器中,...
  • uagvdu
  • uagvdu
  • 2016年06月30日 00:01
  • 1438

java临时变量的探讨

java临时变量的探讨      坚持基本原则: 临时变量应该是在哪个代码块需要时就定义,而不是在类变量,或者方法变量里面定义。 如果临时变量定义为方法变量,那么在各个代码块,可以能使用到相同的变量值...
  • blueman2012
  • blueman2012
  • 2011年07月28日 11:26
  • 1539
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:将临时变量内联化 & 以查询代替临时变量
举报原因:
原因补充:

(最多只允许输入30个字)