重构——42函数改名(Rename Method)

函数改名(Rename Method)

函数的名称未能揭示函数的用途;修改函数名称

一、动机

1、代码首先是为人写的,然后才是为计算机写的

2、想要成为一个真正的编程高手,起名的水平至关重要

二、做法

1、检查函数签名是否被超类或者子类实现,如果是,则需要针对每份实现分别进行下列步骤

2、声明一个新函数,将它命名为你要要的新名称。将旧函数的代码复制到新函数中,并进行调整

3、编译

4、修改旧函数,令它将调用转发给新函数

5、编译,测试

6、找出旧函数所有的引用点,修改它们,令它们改而引用新函数。每次修改后,编译并测试

7、删除旧函数,如果旧函数是该类public接口的一部分,你可能无法安全地删除它,这种情况下,标记deprecated

时间: 2024-09-20 16:47:11

重构——42函数改名(Rename Method)的相关文章

重构——1提炼函数(Extract Method)

提炼函数(Extract Method) 你有一段代码可以被组织在一起并独立出来,将这段代码放进一个独立的函数中,并让函数名称解释该函数的用途. 一.动机 1.每个函数的粒度都小,那么被复用的几率就大 2.函数的长度不是问题,关键在于函数名称和函数本体之间的语义距离 3.使高层函数读起来向一系列注释 4.如果函数都是细粒度,那么函数覆盖也会更容易些 二.做法 1.创建函数,名字要起好 2.转移代码 3.检查提炼出的代码是否引用了作用域限于原函数的变量(临时变量和源函数参数) 4.检查是否有任何的

重构——8以函数对象取代函数(Replace Method with Method Object)

以函数对象取代函数(Replace Method with Method Object) 有一个大型函数,其中对局部变量的使用使你无法采用Extract Method.将这个函数放进一个单独的对象里中,如此一来局部变量就成了对象内的字段,然后你就可以在同一个对象中将这个大型函数分解为多个小型函数 一.动机 1.小函数优美动人,只要将相对独立的代码从大型函数中提炼出来,就可以大大提高代码的可读性 2.局部变量的存在会增加函数分解难度.如果一个函数之中局部变量泛滥成灾,那么想分解这个函数是非常困难的

重构——2内联函数(Inline Method)

内联函数(Inline Method) 一个函数本体与名称同样清楚易懂,在函数调用点插入函数本体,然后移除该函数. 一.动机 1.非必要的间接性总让人不舒服 2.把组织不合理的一群函数重新组织 3.并不是所有的间接层都有价值,委托太多,会让人晕头转向 二.做法 1.检查函数,确定它不具多态性 2.找出这个函数所有的被调用点 3.将这个函数所有的调用点都替换为函数本体 4.编译,测试 5.删除该函数的定义

重构——10搬移函数(Move Method)

搬移函数(Move Method) 你的程序中,有个函数与其所驻类之外的另一个类进行更多的交流:调用后者,或者被后者调用.在该函数最常引用的类中建立一个有着类似行为的新函数.将就函数变成一个单纯的委托函数,或是将旧函数完全移除 一.动机 减少类之间的耦合,是系统中的类更简单,更干净利落的完成系统交付的任务 二.做法 1.检查源类中被原函数所使用的一切特性,考虑它们是否也应该被搬移.考虑是否要将使用相同特性的函数一并搬移 2.检查源类的超类和子类,看看是否有该函数的其他声明 3.在目标类中声明这个

重构——52隐藏函数(Hide Method)

隐藏函数(Hide Method) 有一个函数,从来没有被其它任何类用到:将这个函数改为private 一.动机 提高函数可见度容易,降低稍微困难一些 二.做法 1.经常检查有没有可能降低某个函数的可见度 2.尽可能降低所有函数的可见度 3.没完成一组函数的隐藏之后,编译并测试

重构——58函数上移(Pull Up Method)

函数上移(Pull Up Method) 有些函数,在各个子类中产生完全相同的结果:将该函数移至超类 一.动机 避免重复 二.做法 1.检查待提升函数,确定它们是否完全一致 2.函数签名不同的时候,先弄成一样的 3.在超类中新建一个函数,将某一个待提升函数的代码复制到其中,做适当的调整,然后编译 4.移除一个待提升的子类函数 5.编译,测试 6.逐一移除待提升的子类函数,直到只剩下超类中的函数为止.每次移除后都需要测试 7.观察该函数的调用者,看看是否可以改为使用超类类型的对象

重构——60函数下移(Push Down Method)

函数下移(Push Down Method) 超类中的某个函数只与部分子类有关:将这个函数移到相关的子类中去 一.动机 使用Extract Subclass后可能需要它 二.做法 1.在所有的子类中声明该函数,将超类中的函数本体复制到每一个子类函数中 2.删除超类中的函数或者抽象它 3.编译,测试 4.将该函数从所有不需要它的那些子类中删除 5.编译,测试

重构——66塑造模板函数(Form Template Method)

塑造模板函数(Form Template Method) 1.你有一些子类,其中相应的某些函数以相同顺序执行类似的操作,但各个操作的细节上有所不同 2.将这些不同的操作细节分别放进独立函数中,并保持它们都有相同的签名,于是原函数也就变得相同了.然后将原函数上移至超类 一.动机 Template Method 二.做法 1.在各个子类中分解目标函数,使分解后的各个函数要不完全相同,要不完全不同 2.运用Pull Up Mehtod将各个子类中完全相同的函数上移至超类 3.对于那些完全不同的函数,实

PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数_php技巧

思维导图 点击下图,可以看大图. 介绍 我把我比较喜欢的和比较关注的地方写下来和大家分享.上次我写了篇<php 跟老大的对话>.还是有很多疑问,这书帮了我不少的忙. 如果你比较繁忙,或者懒得看文字,建议你直接看截图,也会有很大的收获的.你可以通过比较截图中的代码就能知道孰优孰劣了. 代码部分我为什么用图呢?因为我经常用手机看代码,博客园的代码在手机里乱七八糟的,还是看图比较舒服. 专业术语 我们毕竟是用英文字母编码,所以用一些英语单词,更能显示出我们的专业性.以下的英文单词,你如果掌握了,与其