概述
函数本体(method body)不再需要某个参数。
将该参数去除。
动机(Motivation)
程序员可能经常添加参数,却往往不愿意去掉它们。他们打的如意算盘是,无论如 何,多余的参数不会引起任何问题,而且以后还可能用上它。
这也是恶魔的诱惑,一定要把它从脑子里赶出去!参数指出函数所需信息,不同的参数值代表不同的意义。函数调用者必须为每一个参数操心该传什么东西进去。如果你不去掉多余参数,你就是让你的每一位用户多费一份心。这是很不划算的,尤其「去除参数」是非常简单的一项重构。
但是,对于多态函数(polymorphic method),情况有所不同。这种情况下,可能多态函数的另一份(或多份)实现码会使用这个参数,此时你就不能去除它。你可以添加一个独立函数,在这些情况下使用,不过你应该先检查调用者如何使用这个函数,以决定是否值得这么做。如果某些调用者已经知道他们正在处理的是 一个特定的subclass ,并且已经做了额外工作找出自己需要的参数,或已经利用对classes 体系的了解来避免取到null ,那么就值得你建立一个新函数,去除那多余参数。如果调用者不需要了解该函数所属的class ,你也可以保持调用者无知(而幸福)的状态。
作法(Mechanics)
Remove Parameter 的作法和Rename Method 、Add Parameter 非常相似。
· | 检查函数签名式(signature)是否被superclass 或如subclass 实现过。如果是,则需要针对每份实现品分别进行下列步骤。 |
· | 声明一个新函数,名称与原函数同,只是去除不必要的参数。将旧函数的代码拷贝到新函数中。 |
Ø | 如果需要去除的参数不止一个,将它们一次性去除比较容易。 |
· | 编译。 |
· | 修改旧函数,令它调用新函数。 |
Ø | 如果只有少数几个地方引用旧函数,你大可放心地跳过这一步骤。 |
· | 编译,测试。 |
· | 找出旧函数的所有被引用点,将它们全部修改为对新函数的引用。每次修改后,编译并测试。 |
· | 删除旧函数。 |
Ø | 如果旧函数是class public 接口的一部分,你可能无法安全地删除它。 这种情况下,将它保留在原处,并将它标记为"deprecated"(不再被赞同)。 |
· | 编译,测试。 |
由于我可以轻松地添加、去除参数,所以我经常一次性地添加或去除必要的参数。
最后
以上就是义气诺言为你收集整理的简化函数调用之三 :Remove Parameter(移除参数)的全部内容,希望文章能够帮你解决简化函数调用之三 :Remove Parameter(移除参数)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复