重构——7移除对参数的赋值(Remove Assignments to Parameters)

移除对参数的赋值(Remove Assignments to Parameters)

代码对一个参数进行赋值,以一个临时变量取代该参数的位置

一、动机

1、降低了代码的清晰度

2、java只采用按值传递方式,我们的讨论也正是基于这一点

二、做法

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

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

3、修改赋值语句,使其对新建之临时变量赋值

4、编译,测试

时间: 2024-10-07 19:20:27

重构——7移除对参数的赋值(Remove Assignments to Parameters)的相关文章

重构——51移除设值函数(Remove Setting Method)

移除设值函数(Remove Setting Method) 类中的某个字段应该在对象创建时被设值,然后就不再改变:去掉该字段的所有设值函数 一.动机 不希望对象被改变,就不要提供设值函数,同时final之 二.做法 1.检查设值函数被使用的情况,看它是否只被构造函数调用,或者被构造函数所调用的另一个函数调用 2.修改构造函数,使其直接访问设值函数所针对的那个变量 3.编译,测试 4.移除这个设值函数,将它所针对的字段设置为final 5.编译,测试

Silverlight编译问题:未给任务“CreateRiaClientFilesTask”的必需参数“ClientFrameworkPath”赋值。

本机安装WCF RIA Services SP2 Preview之后,从没有安装WCF RIA Services SP2 Preview的机子把编写好的项目拿来本机后, 出现 未给任务"CreateRiaClientFilesTask"的必需参数"ClientFrameworkPath"赋值. 无法编译的问题: 解决方法: 1. 编译SP2 Preview之前的RIA Services项目,出现 未给任务"CreateRiaClientFilesTask&

指针-Java传递参数无法赋值

问题描述 Java传递参数无法赋值 为什么这样无法给pointer赋值,我debug看变量g.adjList[i}.firstedge明明不为null,但是整个循环下来pointer一直都是null,没有赋值成功请问这个什么回事? Graph是我定义的图的数据结构.firstedge的类型也是EdgeNode public static void showAll(Graph g) { for (int i = 1;i<= g.numVertexs ; i++) { 'EdgeNode point

重构——44移除参数(Remove Parameter)

移除参数(Remove Parameter) 函数本体不再需要某个函数:将该参数去除 一.动机 不去掉多余的参数,就让用户多费一份心 二.做法 1.检查函数签名是否被超类或者子类实现,如果是,则需要针对每份实现分别进行下列步骤 2.声明一个新函数,名称与原函数相同,只是去除不必要的参数.将旧函数代码复制到新函数中 3.编译 4.修改旧函数,令它调用新函数 5.编译,测试 6.找出旧函数所有的引用点,将它们全部修改为对新函数的引用.每次修改后,编译并测试删除旧函数,或者deprecated 7.编

重构——15移除中间人(Remove Middle Man)

移除中间人(Remove Middle Man) 某个类做了过多的简单委托动作:让客户直接调用受托类 一.动机 1.封装委托对象有代价,每当客户要使用委托类的新特征是,你就必须在服务器端添加一个简单的委托函数 2.尺度很难拿捏,重构的意义就在于:你永远不必说对不起,只要把出问题的地方修补好就行了 二.做法 1.建立一个函数,用以获得受托对象 2.对于每个委托函数,在服务类中删除该函数,并让需要调用该函数的客户转为调用受托对象 3.处理每个委托函数后,编译.测试

重构——37移除控制标记(Remove Control Flag)

移除控制标记(Remove Control Flag) 在一系列表达式中,某个变量带有"控制标记作用":以break语句或者return语句取代控制标记 一.动机 单一出口的原则会大大降低代码的可读性 二.做法 1.找出让你跳出这段程序的控制标记值 2.找出对标记变量赋值的语句,代以恰当的break语句或continue语句 3.每次替换后,编译并测试 4.在未能提供break和continue的编程语言中 5.使用Extract Method,恰当的return

重构——46令函数携带参数(Parameterize Method)

令函数携带参数(Parameterize Method) 若干函数做了类似的工作,但在函数本体中却包含了不同的值:建立单一函数,以参数表达那些不同的值 一.动机 去除重复代码,提高灵活性 二.做法 1.新建一个带有参数的函数,使它可以替换先前所有的重复性函数 2.编译 3.将调用旧函数的代码改为调用新函数 4.编译,测试 5.对所有旧函数重复上述步骤,每次替换后,修改并测试

重构——49以函数取代参数(Replace Parameter with Methods)

以函数取代参数(Replace Parameter with Methods) 对象调用某个参数,并将结果作为参数,传递给另一个函数,而接受该参数的函数本身也能够调用前一个函数:让参数接受者去除该项参数,并直接调用前一个参数 一.动机 如果函数可以通过其他途径获得参数值,那么它就不应该通过参数取得该值 二.做法 1.如果有必要,将参数的计算过程提炼到一个独立的函数中 2.将函数本体内引用该参数的地方改为调用新建的函数 3.每次替换后,编译并测试 4.全部替换完成后,使用Remove Parame

代码重构(一):函数重构规则

重构是项目做到一定程度后必然要做的事情.代码重构,可以改善既有的代码设计,增强既有工程的可扩充.可维护性.随着项目需求的不断迭代,需求的不断更新,我们在项目中所写的代码也在时时刻刻的在变化之中.在一次新的需求中,你添加了某些功能模块,但这些功能模块有可能在下一次需求中不在适用.或者你因为需求迭代与变更,使你原有的方法或者类变得臃肿,以及各个模块或者层次之间耦合度增加.此时,你要考虑重构了.   重构,在<重构,改善既有代码的设计>这本经典的书中给出了定义,大概就是:在不改变代码对外的表现的情况