子程序级的重构

1.提取子程序或者方法:

  把内嵌的代码从一个子程序中提取出来,并将其提炼为单独的子程序。

2.将子程序的代码内联化:

  如果子程序的程序体很简单,且含义不言自明,那么就在使用的时候直接使用这些代码

3.将冗长的子程序转换为类:

  如果子程序太长,可以将其转换为类,然后进一步对之前的子程序进行分解,通过所得到

  的多个子程序来改善该代码的可读性。

4.用简单算法替代复杂算法:

  用更为简单的算法来替代复杂的算法

5.增加参数

  如果子程序需用从调用方获得更多的信息,可以增加它的参数从而为其提供信息。

6.删除参数

  如果子程序不再使用某个参数就删除它。

7.将查询操作从修改操作中独立出来:

  通常查询操作并不改变对象的状态,因此一旦有类似GetTotal()的操作改变了对象的状态,

  就应该将查询功能从状态改变功能中独立出来,提供两个独立的子程序。

8.合并相似的子程序,通过参数区分他们的功能:

  两个相似子程序的唯一区别或许只是其中用到的常量值不同。请把他们合并到一起,然后

  将常量值通过参数传入。

9.将行为取决于参数的子程序拆分开来:

  如果一个子程序根据输入参数的值执行了不同的代码,请考虑将它拆分成可几个以被单独

  调用的、无须传递特定参数的子程序。

10.传递整个对象而非特定的成员:

  如果发现有同一个对象的多个值被传递了一个子程序,考虑是否可修改其接口使之接受整个对象。

11.传递特定成员而非整个对象:

  如果发现创建对象的唯一理由只是你需要将它传入某个子程序,那么就考虑一下是否可以修改这个

  子程序,使之接受特定的数据而非整个对象。

12.包装向下转型的操作:

  通常当子程序返回一个对象时,应当返回其已知的最精确的对象类型。这尤其适用于返回迭代器、

  群集、群集元素等的情况。

时间: 2024-10-23 02:42:01

子程序级的重构的相关文章

类级的重构

一.类实现的重构 1.将值对象转化为引用对象: 如果发现自己创建并维护着多个一模一样的大型复杂对象,请改变对这些对象的引用方式. 即仅仅保存着一份主拷贝(值对象),然后其他地方使用对该对象的引用(引用对象). 2.将引用对象转化为值对象: 如果看到自己对某个小型的简单对象进行了多次引用操作,请将这些对象都设置为值对象. 3.用数据初始化替代虚函数: 如果有一组派生类,差别仅仅是虚函数返回的常量不同.与其在派生类覆盖成员函数,不如 让派生类在初始化时设定适当的常量值,然后使用基类中的通用代码处理这

数据级的重构

1.用具名常量替代神秘数值: 如果使用了数字或字符表示形式,例如3.14,那么请将这样的字符使用具名常量来替代,例如PI 2.使用变量的名字更为清晰且传递更多的信息: 如果一个变量的名字容易让人产生误解,就换个好点的名字 3.将表达式内联化: 把一个中间变量换成给它赋值的那个表达式本身 4.用函数来代替表达式: 用一个函数来代替表达式,这样一来表达式就不会在代码中重复出现 5.引入中间变量 将表达式的值赋给中间的变量,要记住,给这个中间变量的命名应能准确概况表达式的用途 6.用多个单一用途变量代

《Code Complete》ch.24 重构

WHAT? 重构(refactoring),Martin Fowler将其定义为“在不改变软件外部行为的前提下,对其内部结构进行改变,使之更容易理解并便于修改”. WHY? 神话:一个管理很完善的软件项目,应该首先以系统化的方法进行需求开发,定义一份严谨的列表来描述程序的功能.设计完全遵循需求,并且完成的相当仔细,这样就让程序员的代码编写工作从头到尾直线型地工作.表明绝大多数代码首次编写后就已完美,测试通过即可被抛诸脑后.代码被修改的惟一时机发生在交付使用后在新版本进行功能的添加 现实:在初始开

特定的重构

1.数据级的重构 使用具名常量代替神秘数值: 使变量的名字更为清晰且传递更多信息 将表达式内联化 用函数来代替表达式 引入中间变量 用多个单一用途变量代替某个多用途变量 在局部用途中使用局部变量而不是参数 将一组类型码转行为类或枚举类型 ... 2.语句级重构 分解布尔表达式 将复杂布尔表达式转换成命名准确的布尔函数 合并条件语句不同部分中的重复代码片段 ... 3.子程序级重构 4.系统级重构 特定的重构,布布扣,bubuko.com

软件架构————重构

软件演化的类型 软件演化就像生物进化一样,有些突变对物种是有益的,而有些是有害的. 区分软件演化类型的关键,就是程序质量在这一过程中时提高了还是降低了.其二,就是这样的演化是源于程序构建过程中的秀海,还是维护过程中的修改. 重构简介 要实现软件演化基本准则,最关键的策略就是重构. 重构的理由 1.代码重复,重复的代码几乎是代表着最初设计里彻底分解方面的一个事物.无论何时,如果需要对某个地方进行修改,你都不得不在另一个地方完成这样的修改--重复代码总会将你置于一种两线作战的尴尬境地. 2.冗长的子

第二十四章 重构

重构简介 重构定义: 在不改变软件外部行为的前提下,对其内部结构进行改变,使之更容易理解以便于修改: 尽可能地将一个程序分解为多个组成部分. 重构的理由 代码重复: 冗长的子程序: 循环过长或嵌套过深: 类的接口未能提供层次一致的抽象: 拥有太多参数的参数列表: 类的内部修改往往被局限于某个部分: 变化导致对多个类的相同修改: 对继承体系的同样修改: case语句需要做相同的修改: 同时使用的相关数据并未以类的方式进行组织: 成员函数使用其他类的特征比使用自身类的特征还要多: 过多使用基本数据类

大话重构连载首页

<大话重构>这本书是我写的第一本书,从今天起我将通过连载的形式逐渐跟大家分享. 这本书让你: 告别游击队转变为正规军. 远离劣质代码走向精妙设计 真正明确专业级的软件开发是如何的 真正明确重构是如何一步一步进行的 高效重构七步曲.面对实践不卡壳 让遗留系统维护不再是你的梦魇 读完这本书以后: 需求变更不再纠结.重构让你润物细无声地容纳它们 超越代码级的重构,从各个层面深度领略重构之美 自己主动化測试不再是梦想.重构让自己主动化測试走你 又一次审视熟悉而陌生的技术.将碎了一地的它们又一次铆合在一

计算机组成原理基本概念汇总

计算机组成原理是计算机科目中偏向于硬件的,我真的没学好,唯一做的好的笔记还是比较完整的.哈哈.这门课真的是博大精深.现在把组成原理的基本知识点与大家分享,希望大家在这门课的学习中少走弯路. 计算机系统概论 把以软件为主实现的机器称为虚拟机器:把由硬件和固件实现的机器称为实际机器. 高级语言的翻译程序有编译程序和解释程序两种. 计算机系统的层次结构从低到高: (1)微程序机器(第0级). (2)传统机器(第1级). (3)操作系统机器(第2级). (4)汇编语言机器(第3级). (5)高级语言机器

MYSQL用户权限管理学习笔记

MYSQL 用户管理 1.权限表 MYSQL是一个多用户的数据库,MYSQL的用户可以分为两大类: (1)       超级管理员用户(root),拥有全部权限 (2)       普通用户,由root创建,普通用户只拥有root所分配的权限 1.1 权限表的位置 数据库:mysql 与权限相关的数据表:user,db,host,tables_priv,columns_priv,procs_priv等 1.2 user表 User表存储了: (1)用户的信息:hots(用户所在的主机),user