Spiga

一天一个重构方法(8):封装条件

2009-05-21 10:03:42

摘要:Encapsulate Conditional:封装条件 当代码中充斥着若干条件判断时,代码的真正意图会迷失于这些条件判断之中。这时我喜欢将条件判断提取到一个易于读取的属性或方法中。 阅读全文

一天一个重构方法(7):责任拆分

2009-05-17 21:02:00

摘要:Break Responsibilities:责任拆分 把一个类的多个职责进行拆分,这贯彻了单一职责原则(SRP)。尽管对于如何划分“职责”经常存在争论,但应用这项重构还是十分简单的。我这里并不会回答划分职责的问题,只是演示一个结构清晰的示例,将类划分为多个负责具体职责的类。 阅读全文

一天一个重构方法(6):提取方法对象

2009-05-14 23:03:01

摘要:Extract Method Object:提炼方法对象 当你尝试进行提炼方法的重构时,需要引入大量的方法。在一个方法中使用众多的本地变量有时会使代码变得丑陋。因此最好使用提炼方法对象这个重构,将执行任务的逻辑分开。 阅读全文

一天一个重构方法(5):引入解释性变量

2009-05-11 16:34:10

摘要:Introduce Explaining Variable:引入解释性变量 你有一个表达式,有可能非常复杂而难以阅读。这种情况下,临时变量可以帮助你将表达式分解为比较容易管理的形式。将赋值表达式(或其中一部分)的结果放进一个临时变量,以此变量名称来解释表达式的用途。 阅读全文

一天一个重构方法(4):打破依赖

2009-05-09 00:02:24

摘要:Break Dependencies:打破依赖 有些单元测试需要恰当的测试“缝隙”(test seam)来模拟/隔离一些不想被测试的部分。如果你正想在代码中引入这种单元测试,那么今天介绍的重构就十分有用。在这个例子中,我们的客户端代码使用一个静态类来实现功能。但当需要单元测试时,问题就来了。我们无法在单元测试中模拟静态类。解决的方法是使用一个接口将静态类包装起来,形成一个缝隙来切断与静态类之间的依赖。 阅读全文

一天一个重构方法(3):策略模式转换

2009-05-07 15:43:21

摘要:Switch to Strategy:策略模式转换switch分支 switch 语句块很大,并且会随时引入新的判断条件。这时,最好使用策略模式将每个条件封装到单独的类中。 实现策略模式的方式是很多的。我在这里介绍的策略重构使用的是字典策略,这么做的好处是调用者不必修改原来的代码。 阅读全文

一天一个重构方法(2):内联方法

2009-05-06 13:22:28

摘要:Inline Method:将方法内联化 一个方法,其本体如果比其名称更清楚易懂。在方法调用点插入方法本体,然后移除该方法 阅读全文

一天一个重构方法(1):提取方法

2009-05-05 15:50:24

摘要:Extract Method是最常用的重构手法之一。当有一个过长的方法或者一段需要注释才能让人理解用途的代码,就可以将这段代码放进一个独立的方法中。 阅读全文

Javascript真谛12——甘露模型

2008-08-30 14:31:19

摘要:当今的JavaScript世界里,各式各样的AJAX类库不断出现。同时,在开放Web API的大潮中,AJAX类库作为Web API最重要的形式,起着举足轻重的作用。这些AJAX类库是否方便引用,是否易于扩展,是否书写优雅,都成了衡量Web API质量的重要指标。 甘露模型基于JavaScript原型机制,用及其简单的Class()函数,构造了一个非常优雅的面向对象的类机制。事实上,我们完全可以在这个甘露模型的基础上打造相关的的AJAX类库,为开发人员提供简洁而优雅的Web API接口。 阅读全文

Javascript真谛11——原型真谛

2008-08-28 11:10:18

摘要:正当我们感概万分时,天空中一道红光闪过,祥云中出现了观音菩萨。只见她手持玉净瓶,轻拂翠柳枝,洒下几滴甘露,顿时让JavaScript又添新的灵气。 观音洒下的甘露在JavaScript的世界里凝结成块,成为了一种称为“语法甘露”的东西。这种语法甘露可以让我们编写的代码看起来更象对象语言。 要想知道这“语法甘露”为何物,就请君侧耳细听。 在理解这些语法甘露之前,我们需要重新再回顾一下JavaScript构造对象的过程。 我们已经知道,用 var anObject = new aFunction() 形式创建对象的过程实际上可以分为三步:第一步是建立一个新对象;第二步将该对象内置的原型对象设置为构造函数prototype引用的那个原型对象;第三步就是将该对象作为this参数调用构造函数,完成成员设置等初始化工作。对象建立之后,对象上的任何访问和操作都只与对象自身及其原型链上的那串对象有关,与构造函数再扯不上关系了。换句话说,构造函数只是在创建对象时起到介绍原型对象和初始化对象两个作用。 阅读全文