美文网首页
第10章 简化函数调用

第10章 简化函数调用

作者: 后来丶_a24d | 来源:发表于2020-03-16 16:53 被阅读0次

目录

  • RenameMethod(函数改名)
  • AddParameter(添加参数)
  • RemoveParameter(移除参数)
  • SeparateQueryfromModifier(将查询函数和修改函数分离)
  • ParameterizeMethod(令函数携带参数)
  • ReplaceParameterwithExplicitMethods(以明确函数取代参数)
  • PreserveWholeObject(保持对象完整)
  • IntroduceParameterObject(引入参数对象)
  • RemoveSettingMethod(移除设值函数)
  • HideMethod(隐藏函数)
  • ReplaceConstructorwithFactoryMethod(以工厂函数取代构造函数)
  • EncapsulateDowncast(封装向下转型)
  • ReplaceErrorCodewithException(以异常取代错误码)
  • ReplaceExceptionwithTest(以测试取代异常)

简化函数调用

函数改名

  • 函数的名称未能揭示函数的用途,修改函数的名称.
  • 函数的名称应该准确表达它的用途。给函数命名有一个好办法,首先考虑应该给这个函数写上一句怎样的注释,然后再想办法将注释变成函数名称。

添加参数

  • 某个函数需要从调用端得到更多信息,为此函数添加一个对象参数,让该对象带进函数所需信息
  • 只要可能,其他选择都比添加参数要好,因为他们不会增加参数列的长度。过长的参数列是不好的味道,因为程序员很难记住那么多参数,而且长参数列往往伴随着坏味道数据泥团

移除参数

  • 程序员可能经常添加参数,却往往不愿意去掉它们。他们打的如意算盘是:无论如何,多余的参数不会引起任何问题,而且以后还可能用上它。
  • 如果你不去掉多余参数,就是让你的每一位用户多费一份心。是很不划算的,更何况去掉参数是非常简单的一项重构

将查询函数和修改函数分离

  • 某个函数既返回对象状态值,又修改对象状态。建立两个不同的函数,其中一个负责查询,另一个负责修改。

令函数携带参数(类似命令模式)

  • 你可能会发现这样的2个函数:它们做着类似的工作,但因少数几个值致使行为略为不同。这种情况下,你可以将这些各自分离的函数统一起来,并通过参数来处理那些变化,用以简化问题。这样的修改可以去除重复代码,并提高灵活性,因为你可以用这个参数处理更多的变化情况。

以明确函数取代参数

  • 对象调用某个参数,并将结果作为参数,传递给另一个函数,而接受该参数的函数本身也能够调用前一个函数;让参数接受者去除该项参数,并直接调用前一个参数
  • 如果函数可以通过其他途径获得参数值,那么它就不应该通过参数取得该值

保持对象完整

  • 你从某个对象中取出若干值,将它们作为某一次函数调用时的参数;改为传递整个对象
  • 减小参数列表,提高代码可读性。
  • 过度会使依赖结构恶化

引入参数对象

  • 你常会看到特定的一组参数总是一起被传递。可能有好几个函数都使用这一组参数,这些参数可能隶属同一个类,也可能隶属不同的类。这样一组参数就是所谓的数据泥团,我们可以运用一个对象包装所有这些数据。

移除设值函数

  • 如果你为某个字段提供了设值函数,这就暗示这个字段值可以被改变。如果你不希望在对象创建之后此字段还有机会被改变,那就不要为它提供设值函数。

隐藏函数

  • 有一个函数,从来没有被其他任何类用到,将这个函数修改为private。

以工厂函数取代构造函数

  • 设计模式中工厂模式
  • 你希望在创建对象时不仅仅是做简单的建构工作。将构造函数替换为工厂函数

封装向下转型

  • 向下转型也许是一种无法避免的罪恶,但你仍然应该尽可能少做。如果你的某个函数返回一个值,并且你知道所返回的对象类型比函数签名所昭告的更特化,你便是在函数用户身上强加了非必要的工作。这种情况下你不应该要求用户承担向下转型的责任,应该尽量为他们提供准确的类型

以异常取代错误码

  • 某个函数返回一个特定的错误码(比如3),用以表示某种错误情况;改用异常
  • 代码的可理解性使我们虔诚追求的目标

以测试取代异常

  • 面对一个调用者可以预先检查的条件,你抛出了一个异常;修改调用者,使它在调用函数之前先做检查

参考文章

相关文章

  • 简化函数调用

    0. 本章内容导图 在对象技术中,最重要的概念莫过于“接口”,容易被理解和被使用的接口是开发良好面向对象软件的关键...

  • 简化函数调用

    一 Rename Method(修改函数名字) 怎么说 修改函数的名字,让函数名来揭示函数的用途 为什么 我们应该...

  • 第10章 简化函数调用

    目录 RenameMethod(函数改名) AddParameter(添加参数) RemoveParameter(...

  • 《重构》- 简化函数调用

    一. Rename Method(函数改名) 介绍 场景函数的名称未能揭示函数的用途。 手法修改函数名称。 动机 ...

  • 重构——简化函数调用

    1 Rename Method(函数改名) 修改函数名字以良好表达函数的用途。Motivation:各种大师特别推...

  • 第十章 简化函数调用

    简化函数调用 10.1 Rename Method (函数改名) 函数的名称未能揭示函数的用途 修改函数名称 将复...

  • View绘制流程

    View绘制流程函数调用链(简化版) 1、measure MeasureSpec 组成:测量规格(MeasureS...

  • 偏函数

    当一个函数有很多参数时,调用者就需要提供多个参数。如果减少参数个数,就可以简化调用者的负担。 比如,int()函数...

  • Python中偏函数

    当一个函数有很多参数时,调用者就需要提供多个参数。如果减少参数个数,就可以简化调用者的负担。 比如,int()函数...

  • 15-python中偏函数

    当一个函数有很多参数时,调用者就需要提供多个参数。如果减少参数个数,就可以简化调用者的负担。 比如,int()函数...

网友评论

      本文标题:第10章 简化函数调用

      本文链接:https://www.haomeiwen.com/subject/ktdnehtx.html