引入解释性变量

原创 2004年10月19日 21:20:00

Introduce Explainning Variable(引入解释性变量)

Summary:

  • 将该复杂表达式(或其中一部分)的结果放进一个临时变量,以此变量名称来解释表达式用途。

Tips:

  • 在条件逻辑中,Introduce Explaining Variable可以用来将每个条件子句提炼出来,以一个良好命名的临时变量来解释对应条件子句的意义。

 

Comments by Allen Lee:

Inline Temp与Introduce Explaining Variable:

  • 两者在一定程度上(外表行为)恰恰相反。前者把临时变量的表达式直接插入调用方以便去掉临时变量,后者却把相关表达式提炼出来用一个临时变量代替。
  • 前者要去掉的临时变量所代表的表达式是比较简单的,一般用来储存直接对某个函数或者某个对象的成员函数调用所得到的返回值,如order.GetResult();(函数样式)或者order.Result;(C# property 样式);而后者要提炼的表达式确实比较复杂,至少不是一眼可以看出其含义的,如textBox1.Text.ToUpperCase().Contains("@");。
  • 前者一般是为实施其他重构原则,例如Extract Method,铺平道路所用;而后者则一般为提高代码,尤其是不能一眼看出其含义的复杂表达式,的可读性所用。
  • 后期优化时,有时某些表达式虽然比较简单,例如order.GetResult();,但由于其内部算法复杂并只赋值一次,如果把它使用Inline Temp直接嵌入调用方,那么每次需要用到的时候都进行一次计算将会付出很大的代价。此时我们可能首先看看是否能够把该函数进行Extract Method,再看看是否能够Substitute Algorithm,尽量把函数分割,实在没办法的时候,我们就只能重新引入临时变量把结果储存一次留为后用。

Introduce Explaining Variable与Replace Temp with Query:

  • 这两者可以看情况组合使用。当我们发现某些表达式返回的结果其实可以对外开放,那么,我们可以用Introduce Explaining Variable引入临时变量,然后用Replace Temp with Query把这个临时变量提取到一个单独的Query。  
  • 这两者组合使用有时候也等效于直接使用Extract Method。所以,如果你有时候发现要提炼的函数由于临时变量太多而逻辑不清晰,不妨把Extract Method的过程拆成这两者来用,往往会收到意想不到的效果。

 

重构笔记——引入解释性变量

本文是在学习中的总结,欢迎转载但请注明出处:         在上一篇文章中介绍了“以查询取代临时变量“。本文将介绍“引入解释性变量”这种重构手法。         下面让我们来学习这种重构手法...
  • pistolove
  • pistolove
  • 2015年01月05日 07:24
  • 1794

Introduce Explaining Variable(引入解释性变量)

if((platform.toUpperCase().indexOf("MAC") > -1) &&   (brower.toUpperCase().indexOf("IE") > -1) &&   ...
  • bendan999999999
  • bendan999999999
  • 2008年11月04日 09:39
  • 488

6.5 Introduce Explaining Variable(引入解释性变量)

概括         你有一个复杂的表达式。          将该复杂表达式(或其中一部分)的结果放进一个临时变量,以此变量名来解释表达式用途。       例子 if((pla...
  • tanhaiyuan
  • tanhaiyuan
  • 2013年11月27日 14:10
  • 858

python学习(解释型语言)

python 安装下载:https://www.python.org/ * 注释:python注释以#开头 * 变量:变量名必须是大小写英文、数字和下划线的组合,且不能以数字开头     1、动...
  • m0_37524661
  • m0_37524661
  • 2017年04月21日 08:58
  • 211

卷积神经网络的可解释性

本文撰写卷积神经网络的可解释性问题 在更~
  • moon_down_wrp
  • moon_down_wrp
  • 2017年06月22日 00:14
  • 418

java重构学习4:引入解释性变量(Introduce Explaing Variable)

本系列来自《java 重构改善既有代码的设计》一书 如果你有一个很复杂的表达式,可以考虑将复杂表达式(或其中的一部分的结果放入到一个临时变量,以此变量名来解释表达式用途)。 if (VodStat...
  • xuzengqiang2
  • xuzengqiang2
  • 2014年12月18日 14:24
  • 330

重新组织函数--Introduce Explaining Variable(引入解释性变量)

你有一个复杂的表达式。 将该复杂表达式(或其一部分)的结果放进一个临时变量,以此变量名称来解释表达式用途。...
  • HDPCOMEON
  • HDPCOMEON
  • 2014年12月05日 14:52
  • 532

python之解释性语言

目前,常用的解释性语言有 Perl,Python, Lisp/Scheme,Ruby等,究竟什么是解释性语言呢? 所谓的解释性语言主要包括两个方面:以使他们都有自己的解释器,也可以通俗的理解为翻译器...
  • dxeicho
  • dxeicho
  • 2012年08月14日 15:02
  • 2537

神经网络的可解释性——Network Dissection: Quantifying Interpretability of Deep Visual Representations

本文是周博磊大神CVPR 2017年的文章,主要关注网络的可解释性。神经网络的可解释性一直是一个很有趣也很有用的东西。很多情况下大家都把神经网络作为一个黑箱来用,而近年来也有越来越多的工作希望能够探索...
  • isMarvellous
  • isMarvellous
  • 2017年07月23日 11:52
  • 1418

解释型语言特性

高级语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行,按转换方式可 将它们分为两类:   1.解释类:执行方式类似于我们日常生活中的“同声翻译”,应用程序源代码一边由 相应语言的解释器“翻...
  • u010973051
  • u010973051
  • 2016年03月08日 15:56
  • 746
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:引入解释性变量
举报原因:
原因补充:

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