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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/pistolove/article/details/42290249

    本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/42167015


        在上一篇文章中介绍了“ 内联函数“。本文将介绍“内联临时变量”这种重构手法。

        下面让我们一起来学习该重构手法把。(PS:虽然某些重构手法看起很简单,但是和其它重构手法结合起来使用,会产生异曲同工的效果)


开门见山

        发现:你有一个临时变量,只被一个简单表达式赋值一次,而它妨碍了其它的重构手法。

        解决:将所有对该变量的引用动作,替换为对它赋值的那个表达式自身。

	//重构前
	double basePrice = singleOrder.basePrice();
	return (basePrice > 1000)
	//重构后
	return (singleOrder.basePrice() > 1000)


动机

        内联临时变量多数情况是作为“以查询取代临时变量”(下一篇将介绍)的一部分来进行使用的,而真正的动机是出现在“以查询取代临时变量”中。         唯一单独使用内联临时变量的情况是:你发现某个临时变量被赋予某个函数调用的返回值。一般来说,这样的临时变量是不会造成任何危害的,也可以放心地放在那儿。但是,如果这个临时变量妨碍了其它的重构手法(例如提炼函数),你就应该将其内联化。


做法

(1)检查给临时变量赋值的语句,确保等号右边的表达式没有副作用。
(2)如果这个临时变量并未被声明为final,那就将它声明为final,然后编译。(这可以检查该临时变量是否真的只被赋值一次)
(3)找到该临时变量所有引用点,将它们替换为“为临时变量赋值”的表达式。
(4)每次修改后,编译并测试。
(5)修改完后所有引用点后,删除该临时变量的声明和赋值语句。
(6)编译,测试。


        本文主要介绍了重构手法——内联临时变量,该手法和内联函数类似,处理起来比较简单,其主要是结合其它重构手法一起使用。虽然手法比较简单,但是在某些情况下看起来又不得不使用,因为使用其后会让其它重构方法更加便捷。希望本文对你有所帮助。有问题可以留言,谢谢。(PS:下一篇将介绍重构笔记——以查询取代临时变量)



没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试