重构摘要10_简化函数调用

《重构-改善既有代码的设计》Martin Fowler 摘要: 第十章 简化函数调用

Rename Method 函数改名

改一个自表达的名字吧!骚年

Add Parameter 添加参数

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

为此函数添加一个对象参数,让该对象代价函数所需信息。并发编程大多数参数很长,不放在一个类中,因为这样你可以保证传递给函数的参数都是不可修改的。

Remove Parameter 移除参数

移除不必要的某个参数

Separate Query from Modifier 将查询函数和修改函数分类

某个函数既返回对象状态值,又修改对象状态

建立两个函数,一个查,一个改。多线程一般查改一起,那么提供第三个方法调另两个。

Parameterize Method 令函数带参数

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

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

以“可将少量数值视为参数”为依据,找出带有重复性的代码。提炼参数

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

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

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

Preserve Whole Object 保持对象完整

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

改为传递整个对象

Replace Parameter with Methods 以函数取代参数

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

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

Introduce Parameter Object 引入参数对象

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

以一个对象取代这些参数。

还可以适当的行为从其他函数移到这个新建对象中。

Remove Setting Method 移除设置函数

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

Hide Method 隐藏函数

没有被其他任何类用到

Replace Constructor with Factory Method 以工厂函数取代构造函数

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

Encapsulate Downcast 封装向下转型

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

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

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

Replace Exception with Test 以测试取代异常

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

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

重构摘要10_简化函数调用

时间: 2024-10-13 20:22:39

重构摘要10_简化函数调用的相关文章

重构摘要9_简化条件表达式

<重构-改善既有代码的设计>Martin Fowler 摘要: 第九章 简化条件表达式 Decompose Conditinal 分解条件表达式 你有一个复杂的条件(if-then-else)语句 从三个段落中分别提炼出独立函数 Consolidate Conditional Expression 合并条件表达式 你有一系列条件测试,都得到相同结果 将这些测试合并成为一个条件表达式,并将这个条件表达式提炼成为一个独立函数 检查用意更清晰,有时也不用这么做 Consolidate Duplica

[代码重构]简化函数调用

在对象技术中,最重要的概念莫过于“接口”,容易被理解和被使用的接口是开发良好面向对象软件的关键.本章介绍的重构手法是用来使接口变得更简洁易用的. 简化函数调用 1. 重构手法 1.1 函数改名 概要: 函数的名称未能揭示函数的用途. 修改函数名称. 动机: a. 让函数名称准确表达它的用途 示例: 重构前: public String getTelephoneNumber() { return mOfficeAreaCode + "-" +mOfficeNumber; } 重构后: /

重构摘要3_代码的坏味道

如果尿布臭了,就换掉它. 1.Duplicated Code 重复代码 Extract Method Pull Up Method Form Template Method --> Template Method 模式 Substitute Algorithm --> 函数算法替代 2.Long Method 过长的函数 "间接层"所带来的全部利益--解释能力.共享能力.选择能力--都是有小函数支持的. 真正关键在于一个好名字. 每当感觉需要以注释来说明点什么的时候,我们就

重构摘要6_重新组织函数

Extract Method 提炼函数 过长的函数或者一段需要注释才能理解的代码,就将这段代码放进一个独立的函数中. 函数粒度小,复用机会变大,覆写容易. 高层函数如一系列注释 关键看函数名称和函数本体之间的语义距离. 变清晰,做什么来命名 Inline Method 内联函数 有时可内联到一个大函数后,再从中提炼出组织合理的小型函数. Inline Temp 内联临时变量 return (order.basePrice>0); //可定义final确定是否被赋值一次 Replace Temp

重构摘要2_重构原则

何谓重构 对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提交其可理解性,降低其修改成本. 重构的目的是软件更容易理解和修改: 重构不会改变软件可观察的行为. 两顶帽子比喻 添加新功能 不修改既有代码,只管添加新功能,并通过测试 重构 不添加功能,只管改进程序结构 为何重构 重构改进软件设计 改进的重要方向就是消除重复代码. 重构使软件更容易理解 准确说出我所要的 利用重构来协助我理解不熟悉的代码 随着代码渐趋简洁,发现可以看到一些以前看不到的设计层面的东西. 重构帮助找到BUG

重构摘要7_在对象之间搬移特性

<重构-改善既有代码的设计>Martin Fowler 摘要: 第七章 在对象之间搬移特性 Move Method 搬移函数 你的程序中,有个函数与其所驻类之外的另一个类进行更多交流:调用后者,或被后者调用 在该函数最常引用的类中建立一个有着类似行为的新函数.将旧函数变成一个单纯的委托函数,或者将旧函数完全移除. Move Field 搬移字段 某个字段被其所驻类之外的另一个类更多地用到. 如果我需要对类做许多处理,保持小步前进是有帮助的. Extract Class 提炼类 某个类做了应该由

重构摘要8_重新组织数据

ASP.NET MVC路由(一) 前言 从这一章开始,我们即将进入MVC的世界,在学习MVC的过程中在网上搜索了一下,资料还是蛮多的,只不过对于我这样的初学者来看还是有点难度,自己就想看到有一篇引导性的资料可以帮助我初步的了解一下这部分知识,然后再去学习大神们写的资料.并不是说看完文章就会可以开发.可以怎么怎么样,没有!这些都没有,只是让你在脑海中把这部分内容记住它们的模型图以及一个大概的在MVC框架中的位置或者是整个系统中的位置,说了这么多的目的就是让大家更好的了解基础知识,有了它以后的进阶会

重构摘要1

重构概览 所谓重构(refactoring)是这样一个过程:在不改变代码外在行为的前提下,对代码做出修改,以改进程序的内部结构. 摘要 如果你发现自己需要为程序添加一个特性,而代码结构使你无法很方便地达成目录,那就先重构那个程序,使特性的添加比较容易进行,然后再添加特性. 代码块愈小,代码的功能就愈容易管理,代码的处理和移动也就愈轻松. Extract Method 提炼到独立方法中 重构技术就是以微小的步伐修改程序,如果你放下错误,很容易可发现它. 任何一个傻瓜都能写出计算机可以理解的代码,唯

重构摘要4_构筑测试体系

确保所有测试都完全自动化,让它们检查自己的测试结果. 通常使用Junit测试框架 准备好测试夹具,setUp() 创建 tearDown() 删除 Tip 现在使用注解@Before @After @BeforeClass @AfterClass 频繁地运行测试.每次编译请把测试也考虑进去--每天至少执行每个测试一次. 编写测试代码时,往往一开始让它们失败,为了确保测试机制的确可行. 每当你收到bug报告,请先写一个单元测试来暴露bug. 测试你担心出错的部分. 考虑可能出错的边界条件,把测试火