现在的位置: 首页 > 综合 > 正文

第十章 简化函数调用

2013年03月13日 ⁄ 综合 ⁄ 共 1454字 ⁄ 字号 评论关闭

 

第十章 简化函数调用 Making Method Calls Simpler

 

10.1   Rename Method(重命名函数)

症状:函数的名称未能揭示函数的用途。

解决办法:修改函数名称

 

 

10.2   Add Parameter(添加参数)

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

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

 

 

10.3   Remove Parameter(移除参数)

症状:函数本体(method body)不再需要某个参数。

解决办法:将该参数去除。

 

 

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

症状: 某个函数既返回对象状态值,又修改对象状态(state)。

解决办法:建立两个不同的函数,其中一个负责查询,另一个负责修改。

 

 

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

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

解决办法:建立单一函数,以参数表达那些不同的值。

 

 

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

症状:你有一个函数,其内完全取决于参数值而采取不同的反应。

解决办法:针对该参数的每一个可能值,建立一个独立函数。

 

 

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

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

解决办法:该使用(传递)整个对象。

 

 

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

症状:对象调用某个函数,并将所得结果作为参数,传递给另一个函数。而接受该参数的函数也可以(也有能力)调用前一个函数。

解决办法:让参数接受者去除该项参数,并直接调用前一个函数。

 

 

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

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

解决办法:以一个对象取代这些参数。

 

 

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

症状: 你的class中的某个值域,应该在对象初创时被设值,然后就不再改变。

解决办法:去掉该值域的所哟设置函数(setter).

 

 

10.11  Hide Method(隐藏某个函数)

症状: 有一个函数,从来没有被其他任何class用到。

解决办法:将这个函数修改为private.

 

 

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

症状:你希望在创建对象时不仅仅是对它做简单的构建动作(simple construction)

解决办法:将costructor(构造函数)替换为factory method(工厂函数)

 

 

10.13  Encapsulate Downcast(封装向下转型动作)

症状:某个函数返回的对象,需要由函数调用者执行向下转型(downcast)动作。

解决办法:将向下转型(downcast)动作移到函数中。

 

 

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

症状:某个函数返回一个特定的代码(special code),用以表示某种错误情况。

解决办法:改用异常(exception).

 

 

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

症状:面对一个(调用者可预先加以检查)的条件,你抛出了一个异常。

解决办法:修改调用者,使它在调用函数之前先做检查。

 

 

抱歉!评论已关闭.