第十章 简化函数调用

简化函数调用

10.1 Rename Method (函数改名)

函数的名称未能揭示函数的用途

修改函数名称

将复杂的处理过程分解成小函数, 小函数要用好, 必须要有一个好命名, 不是会适得其反.

你不会一次就把名字起好, 大胆的更改吧.

10.2 Add Parameter (添加参数)

某个函数需要从调用端得到更多信息

为此函数添加一个对象参数, 让该对象带进函数所需信息

添加新参数的时候你应该考虑引入对象参数

10.3 Remove Parameter (移除参数)

函数本体不再需要某个参数

将该参数去除

程序员常常喜欢添加参数, 却往往不愿意去除它们.

10.4 Separate Query from Modified (将查询函数和修改函数分离)

某个函数即返回对象状态值, 有修改对象状态

建立两个不同的函数, 其中一个负责查询, 另一个负责修改.

  • 记住函数的功能要单一, 如果你在多线程操作的话, 你会遇到麻烦.

10.5 Parameterize Method (另函数携带参数)

若干函数做了类似的工作, 但在函数本体中却包含了不同的值

建立单一函数, 以参数表达那些不同的值

10.6 Replace Parameter with Explicit Method (以明确函数取代参数)

你有一个函数, 其中完全取决于参数值而采取不同行为

针对该参数的每一个可能值, 建立一个独立函数

10.7 Preserve Whole Object (保存对象完整)

你从某个对象中取出若干值, 将它们作为某一次函数调用时的参数

改为传递整个对象

  • 可以使得参数列更固定. 往往还能提高代码的可读性.
  • 但如果你传递的是整个对象, 被调用函数所在的对象就需要依赖参数对象. 如果这会使得你的依赖结构恶化, 那么就不要使用此项重构.

10.8 Replace Parameter with Method (以函数取代参数)

对象调用某个函数, 并将所得结果作为参数, 传递给另一个函数, 而接受该参数的函数本身也能够调用前一个函数.

让参数接受者去除该项参数, 并直接调用前一个函数.

10.9 Introduce Parameter Object (引入参数对象)

某些参数总是很自然地同时出现

以一个对象取代这些参数

当你把参数组织到一起之后, 往往很快可以发现一些可被移至新建类的行为.

10.10 Remove Setting Method (移除设值函数)

类中的某个字段应该在对象创建时被设值, 然后就不再改变

取代该字段的所有设值函数

10.11 Hide Method (隐藏函数)

有一个函数, 从来没有被其他任何类用到

将这个函数修改为private

10.12 Replace Constructor with Factory Method (用工程函数取代构造函数)

你希望在创建对象时不仅仅是做简单的构建动作

将构造函数替换为工厂函数

  • 在派生子类的过程中以工厂函数取代类型码.

10.13 Encapsulate Downcast (封装向下转型)

某个函数返回的对象, 需要由函数调用者执行向下转型

将向下转型动作移到函数中

10.14 Replace Error Code with Exception (以异常取代错误码)

某个函数返回一个特定的代码, 用以表示某种错误情况

改用异常

10.15 Replace Exception with Test (以测试取代异常)

面对一个调用者可以预先检查的条件, 你抛出一个异常.

修改调用者, 使它在调用函数之前先做检查

不要滥用异常.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1 Rename Method(函数改名) 修改函数名字以良好表达函数的用途。Motivation:各种大师特别推...
    hklbird阅读 3,544评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,212评论 19 139
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 14,759评论 0 38
  • 本文参加#致我们单纯的小美好#活动,本人承诺,文章内容为原创,且未在其他平台发表过。 青葱岁月,记忆染了流...
    记录点滴幸福阅读 3,649评论 6 3
  • 大家误会我是老板的关系户,我要不要澄清?人在江湖飘,谁还没挨过几刀?遇到被误会的事,我们到底应该去解释清楚,还是相...
    请叫我徐老师x阅读 10,348评论 17 13

友情链接更多精彩内容