重构:用Command替换条件调度程序】的更多相关文章

注:该随笔受启发于 <重构与模式>  第七章 第7.6小节 用Command替换条件调度程序 . 对于Command不做过多解释,这里我找了两个例子.供部分园友参阅:Command例子1 Command例子2 . 条件调度程序:我对这个名词的理解为,它是相对简单的选择结构 与 相对独立的业务逻辑的结合体. 话不是很好理解,下面举个小例子吧. 重构前的代码: /// <summary> /// 很简单的选择分支 一层 if else /// N个 相对独立 任务 /// </s…
面相对象的一个核心基础就是多态,当你要根据对象类型的不同要做不同的操作的时候,一个好的办法就是采用多态,把算法封装到子类当中去. 重构前代码: public abstract class Customer { } public class Employee : Customer { } public class NonEmployee : Customer { } public class OrderProcessor { public decimal ProcessOrder(Customer…
第1章 本书的写作缘由 第2章 重构 第3章 模式 第4章 代码坏味 第5章 模式导向的重构目录 第6章 创建 第7章 简化 第8章 泛化 第9章 保护 第10章 聚集操作 第11章 实用重构 参考文献 第1章 本书的写作缘由 1.1 过渡设计 1.2 模式万灵丹 1.3 设计不足 1.4 测试驱动开发和持续重构 1.5 重构与模式 1.6 演进式设计 第2章 重构 2.1 何谓重构 2.2 重构的动机 2.3 众目睽睽 2.4 可读性好的代码 2.5 保持清晰 2.6 循序渐进 2.7 设计欠…
前言 if...else 是所有高级编程语言都有的必备功能.但现实中的代码往往存在着过多的 if...else.虽然 if...else 是必须的,但滥用 if...else 会对代码的可读性.可维护性造成很大伤害,进而危害到整个软件系统.现在软件开发领域出现了很多新技术.新概念,但 if...else 这种基本的程序形式并没有发生太大变化.使用好 if...else 不仅对于现在,而且对于将来,都是十分有意义的.今天我们就来看看如何“干掉”代码中的 if...else,还代码以清爽. 问题一:…
前言 if...else 是所有高级编程语言都有的必备功能.但现实中的代码往往存在着过多的 if...else.虽然 if...else 是必须的,但滥用 if...else 会对代码的可读性.可维护性造成很大伤害,进而危害到整个软件系统.现在软件开发领域出现了很多新技术.新概念,但 if...else 这种基本的程序形式并没有发生太大变化.使用好 if...else 不仅对于现在,而且对于将来,都是十分有意义的.今天我们就来看看如何"干掉"代码中的 if...else,还代码以清爽.…
前言 if...else 是所有高级编程语言都有的必备功能.但现实中的代码往往存在着过多的 if...else.虽然 if...else 是必须的,但滥用 if...else 会对代码的可读性.可维护性造成很大伤害,进而危害到整个软件系统.现在软件开发领域出现了很多新技术.新概念,但 if...else 这种基本的程序形式并没有发生太大变化.使用好 if...else 不仅对于现在,而且对于将来,都是十分有意义的.今天我们就来看看如何"干掉"代码中的 if...else,还代码以清爽.…
第一章 ☛过度设计:是指代码的灵活性和复杂性超出所需. 第二章 ☛重构是一种保持行为的转换. 第三章 ☛每一个模式都是由三部分组成的规则,他表达的是某一环境,一个问题以及解决问题的方案之间的关系. ☛模式痴迷:对模式过于依赖. 第四章 ☛代码坏味道 ●代码重复(Duplicated Code) 通常可以通过形成Template Method重构. ●方法过长(Long Method) ●条件逻辑太复杂(Conditional Complexity) ●基本类型迷恋(Primitive Obses…
定义 重构的定义:在不改变软件可观察行为的前提下,改善其内部结构. 其中,不改变软件行为,是重构最基本的要求.要想真正发挥威力,就必须做到“不需了解软件行为”. 如果一段代码能让你容易了解其行为,说明它还不是那么迫切需要被重构. 需要重构的代码,你只能看到其中的“坏味道”,接着选择手段消除这些“坏味道”,然后才有可能理解他的行为. 构建测试体系 确保每个类每个方法都有对应的测试代码.一套测试就是一套BUG检测器,能够大大缩减查找BUG所需时间. 编写测试代码最有效的时机,实在开始编程以前.能使你…
WHAT? 重构(refactoring),Martin Fowler将其定义为“在不改变软件外部行为的前提下,对其内部结构进行改变,使之更容易理解并便于修改”. WHY? 神话:一个管理很完善的软件项目,应该首先以系统化的方法进行需求开发,定义一份严谨的列表来描述程序的功能.设计完全遵循需求,并且完成的相当仔细,这样就让程序员的代码编写工作从头到尾直线型地工作.表明绝大多数代码首次编写后就已完美,测试通过即可被抛诸脑后.代码被修改的惟一时机发生在交付使用后在新版本进行功能的添加 现实:在初始开…
在代码中,时常有就一类型码(Type Code)而展开的如 switch ... case 或 if ... else if ... else 的条件表达式.随着项目业务逻辑的增加及代码经年累月的修改,这些条件判断逻辑往往变得越来越冗长.特别是当同样的逻辑判断出现在多个地方的时候(结构示意如下),代码的可读性和维护难易程度将变得非常的糟糕.每次修改时,你必须找到所有有逻辑分支的地方,并修改它们. switch(type) { ": ... break; ": ... break; ca…