`
biqing0427
  • 浏览: 55433 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Making Method Calls Simper(简约函数调用)

阅读更多

1、Rename  Method  重新命名函数

  •  函数的名称未能揭示函数的用途。
  •  修改函数名称。
  • 考虑应该给这个函数写上一句怎样的注释,然后想办法讲注释编程函数的名称。

2、Add Parameter  添加函数

  • 某个函数需要从调用端得到更多信息。
  • 尽量不要增加参数,有可能带来坏味。

3、Remove Parameter

  • 不去掉多余参数,让调用者多费一份心。

4、Separate Qrevy From Modifier  将查询函数和修改函数分离

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

5、Paraterice Method  令函数携带参数

  • 参数的作用为提供变化的接口,可变的东西。
  • 若干函数作了类似的工作,但在函数本体中却包含了不同的值。
  • 建立单一函数,以参数表达那些不同的值。

6、Replace  Pararmeter With Explicit Methods   以明确函数取代参数

  • 函数完全取决于参数值而采取不同反应,这里可以理解为不同的动作行为。
  • 以明确函数取代参数,可以将不同的业务类型提取出来。
  • 还要看和上层的接口定义。
  • 如果以参数值觉得函数行为,那么函数用户不但需要观察该函数,而且还要判断参数值是否合法。

7、Preserve Whole Object   保持对象完整

  • 参数过多,而且都来自同一个对象,那么将整个对象传入。
  • 可以使参数列更稳固,不变化。
  • 提供代码的可读性。
  • 如果该对象原本与该函数没有依赖关系,这样容易破坏层次关系。

8、Replace  Pararmeter With Methods   以明确函数取代参数

  • 接受该参数的函数也可以调用前一个函数,让参数接受存者去除该项参数,并直接调用前一个函数。
  • 如果调用端通过“其所属对象内部的另一个函数”来计算参数,并在计算过程中“未曾引用调用端的其他参数”,那么你就应该可以将这个计算过程转移到被调用端内,从而去除该项参数。

9、Remove Setting Method    移除设值函数

  • CLASS中某个值域,应该在对象初创时被设值,然后就不再改变,去掉该值域的所有设值函数(Setter)。
  • 如果为某个值域提供了Setter,这就暗示了这个值域可以被改变。
  • 如果Subclass需要对Superclass的Private变量赋初值,解决方法就是使用Superclass构造函数。

10、Replace Constructor  With Factory Method   以“工厂模式”取代构造函数

  • 简化创建过程,封装创建逻辑。
  • 在Subclassing过程中以Factory Method取代type code。
  • 在父类中提供了子类的创建过程,不用额外类说明,而且类型一致。

11、Replace Error Code With Exception   以异常取代错误码

  • 对于大多数正常情况下做错误判断,显得多余。
  • 某个函数返回一个特定的代码(Special  Code),以表示某种错误情况,改用异常(Exception)。
  • 这种方式更好地将“普通程序”和“错误处理”分开了,使得程序更容易理解。

12、Replace Exception  With  Test   以测试取代正常

  • 面对一个“调用者可预先加以检查”的条件,抛出一个异常,修改调用者,使它在调用函数之前先做检查。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics