打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
步步为营 .NET 代码重构学习笔记 四、临时变量(Temporary Variable)

步步为营 .NET 代码重构学习笔记 四、临时变量(Temporary Variable)

2011-05-18 22:11byspring yang,1351visits,网摘,收藏,编辑

Split Temporary Variable(剖解临时变量)

概述

程序中有某个临时变量被赋值超过一次,它既不是循环变量,也不是一个集用临时变量(collecting temporary variable)

动机(Motivation)

临时变量有各种不同用途,其中某些用途会很自然地导至临时变量被多次赋值.(循环变量)和(集用临时变量)就是两个典型例子:循环变量(loopvariable)会随循环的每次运行而改变(例如 for(inti=0;i<10;i++))语句中的i);集用临时变量(collecting temporaryvariable)负责将(通过整个函数的运算)而构成的某个值收集起来.

作法(Mechanics)

1、在(待剖解)之临时变量的声明式及其第一次被赋值处,修改其名称。

如果稍后之赋值语句是i=j的某表达式形式,就意味着这是个集用临时变量,那么就不要剖解它。集用临时变量的作用通常是累加、字符串接合、写入stream或者向群集(collection)添加元素。

2、以该临时变量之第二次赋值动作为界,修改此前对该临时变量的所有引用点让它们引用新的临时变量。

3、在第二次赋值处,重新声明原先那个临时变量。

示例

1 public void GetArea(double _height, double _width)
2 {
3     double temp = 2 * (_height + _width);
4     Console.WriteLine(temp);
5     temp = _width * _height;
6     Console.WriteLine(temp);
7 }

改为:

1 public void GetArea(double _height, double _width)
2 {
3     double temp = 2 * (_height + _width);
4     Console.WriteLine(temp);
5     double area = _width * _height;
6     Console.WriteLine(area);
7 }

Remove Assignments to Parameters

概述

代码对一个参数进行赋值动作。

动机(Motivation)

首选,我们要确定大家都清楚(对参数赋值)这个说法的意思。如果你把一个名为foo的对象作为参数传给某个函数,那么(对参数赋值)意味改变foo,

使它引用另一个对象。

作法(Mechanics)

1、建立一个临时变量,把待处理的参数值赋予它。

2、以(对参数的赋值动作为界,将其后所有对此参数的引用点,全部替换为(对此临时变量的引用动作)。

3、修改赋值语名,使其改为对新建之临时变量赋值。
示例

1 public int Discount(int inputVal, int quantity, int yeaarToDate)
2 {
3     if (inputVal > 50) inputVal -= 2;
4     if (quantity > 100) inputVal -= 1;
5     if (yeaarToDate > 10000) inputVal -= 4;
6     return inputVal;
7 }

 

改为:

1 public int Discount(int inputVal, int quantity, int yeaarToDate)
2 {
3     int result = inputVal;
4     if (inputVal > 50) result -= 2;
5     if (quantity > 100) result -= 1;
6     if (yeaarToDate > 10000) result -= 4;
7     return result;
8 }

 

总结

尽量不要对参数进行操作,以一个临时变量取代它。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
学习重构(2)-重新组织函数
如何删除windows中的临时文件夹?
让病毒无处藏身--让Temp文件夹里的文件自动清空
系统临时文件的设置 - 开原-修电脑的日志 - 网易博客
解锁不了3e的朋友有福了 附上解锁3e的方法和软件,三星 I9000/Galaxy S 安卓论坛
C#详解struct和class的区别
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服