Summary: 函数体再也不须要某个参数。将该参数去除。程序员
动机:安全
程序员可能常常添加参数,却每每不肯意去掉它们。他们打的如意算盘是:不管如何,多余的参数不会引发任何问题,并且之后还有可能用上它。函数
这也是恶魔的诱惑,必定要把它从脑子里赶出去!参数表明着函数所须要的信息,不一样的参数值有不一样的意义。函数调用者必须为每个参数操心该传什么东西进去。若是你不去掉多余参数,就是让你的每一位用户多费一份心。是很不划算的,更况且“去除参数”是很是简单的一项重构。测试
可是,对于多态函数,状况有所不一样。这种状况下,可能多态函数的另外一份(或多份)实现会使用这个参数,此时你就不能去除它。你能够添加一个独立函数,在这些状况下使用,不过你应该先检查调用者如何使用这个函数,以决定是否值得这么作。若是某些调用者已经知道他们正在处理的是一个特定的子类,而且已经作了额外工做找出本身须要的参数,或已经利用对类体系的了解来避免取到null,那么就值得你创建一个新函数,去除那多余的参数。若是调用者不须要了解该函数所属的类,你也能够继续保持调用者无知而幸福的状态。spa
作法:接口
Remove Parameter的作法和Rename Method、Add Parameter很是类似。编译
1.检查函数签名是否被超类或子类实现过。若是是,则须要针对每份实现分别进行下列步骤。重构
2.声明一个新函数,名称与原函数相同,只是去除没必要要的参数。将旧函数的代码复制到新函数中。引用
à若是要去除的参数不止一个,将它们一次性去除比较容易程序
3.编译。
4.修改旧函数,令它调用新函数。
à若是只有少数几个地方引用旧函数,你能够大胆放心地跳过这一步骤。
5.编译,测试。
6.找出旧函数的全部被引用点,修改它们,令它们改而引用新函数。每次修改后,编译并测试。
7.删除旧函数。
à若是旧函数是该类public接口的一部分,你可能没法安全地删除它。这种状况下,将它保留在原处,并将它标记为deprecated(建议不使用)。
8.编译,测试。