beaa缤纷秒收录
免费加入

网站提交

《重构-改善既有代码》-CSDN博客 《重构-改善既有代码》-CSDN博客 《重构-改善既有代码》-CSDN博客

热度:

编号:412

分类:

加入:2023-12-30 00:52:32

点入:2024-03-24 18:55:57

备案:京ICP备19004658号

名称:北京创新乐知网络技术有限公司

SEO更新时间
2024-03-24T18:55:50

百度权重:百度权重9
百度移动:百度移动9
360 权重:360权重9
搜狗权重:搜狗权重8
《重构-改善既有代码》-CSDN博客

访问网站

https://blog.csdn.net/bihansheng2010/article/details/134604405

举报/报错
网站标签

《重构改善既有代码》


网站描述

文章浏览阅读1.2k次,点赞15次,收藏21次。1、如果你发现自己需要为程序添加一个特性,而代码结构使你无法很方便地达成目的,那就先重构哪个程序,使特性的添加比较容易的进行,然后再添加特性2、重构前,先检查自己是否有一套可靠的测试机制,这些测试必须有自我检验能力3、重构技术就是以微小的步伐修改程序,如果你犯下错误,很容易便可发现它4、任何一个傻瓜都能写出计算机可以理解的代码,唯有写出人类容易理解的代码,才是优秀的程序员5、重构(名词):对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。


上一篇:【Vue】VueSlickCarousel实现轮播展览效果_vue-slick-carousel-CSDN博客

下一篇:JavaWeb笔记之SVN-CSDN博客

seo综合信息
SEO信息 百度来访IP:1683143 | 移动端来访IP:2735728 | 出站链接:0 | 站内链接:87
IP网速: IP地址:220.185.184.3 [中国浙江台州 电信] | 网速:232毫秒
ALEXA排名 世界排名:18 | 预估IP:13140000 | 预估PV:70036200
备案信息 京ICP备19004658号 | 名称:北京创新乐知网络技术有限公司 | 已创建:25年13天
收录 百度 360 搜狗 谷歌
查询 156320000 50600000 700709209 0
电脑关键词 手机关键词 页面友好 首页位置 索引 近期收录
4505726 290523 电脑端优秀 1 0 20
协议类型HTTP/1.1 200 OK 页面类型 text/html; charset=utf-8 服务器类型 WAF 是否压缩是 原网页大小229425 压缩后大小23354 压缩比89.82%
网站快照

《 重 构 改 善 既 有 代 码 》 C S D N 博 客 《 重 构 改 善 既 有 代 码 》 寒 生 1 9 8 8 已 于   2 0 2 4 0 3 0 8 0 8 : 5 5 : 1 2   修 改 阅 读 量 1 . 2 k 收 藏 2 1 点 赞 数 1 5 文 章 标 签 : 重 构 笔 记 于   2 0 2 3 1 2 2 4 2 2 : 4 3 : 3 3   首 次 发 布 版 权 声 明 : 本 文 为 博 主 原 创 文 章 , 遵 循 C C 4 . 0 B Y S A 版 权 协 议 , 转 载 请 附 上 原 文 出 处 链 接 和 本 声 明 。 本 文 链 接 : h t t p s : / / b l o g . c s d n . n e t / b i h a n s h e n g 2 0 1 0 / a r t i c l e / d e t a i l s / 1 3 4 6 0 4 4 0 5 版 权 重 要 列 表 1 、 如 果 你 发 现 自 己 需 要 为 程 序 添 加 一 个 特 性 , 而 代 码 结 构 使 你 无 法 很 方 便 地 达 成 目 的 , 那 就 先 重 构 哪 个 程 序 , 使 特 性 的 添 加 比 较 容 易 的 进 行 , 然 后 再 添 加 特 性 2 、 重 构 前 , 先 检 查 自 己 是 否 有 一 套 可 靠 的 测 试 机 制 , 这 些 测 试 必 须 有 自 我 检 验 能 力 3 、 重 构 技 术 就 是 以 微 小 的 步 伐 修 改 程 序 , 如 果 你 犯 下 错 误 , 很 容 易 便 可 发 现 它 4 、 任 何 一 个 傻 瓜 都 能 写 出 计 算 机 可 以 理 解 的 代 码 , 唯 有 写 出 人 类 容 易 理 解 的 代 码 , 才 是 优 秀 的 程 序 员 5 、 重 构 ( 名 词 ) : 对 软 件 内 部 结 构 的 一 种 调 整 , 目 的 是 在 不 改 变 软 件 可 观 察 行 为 的 前 提 下 , 提 高 其 可 理 解 性 , 降 低 其 修 改 成 本 。 6 、 是 不 过 三 , 三 则 重 构 7 、 不 要 过 早 发 布 接 口 , 请 修 改 你 的 代 码 所 有 权 政 策 , 使 重 构 更 顺 畅 8 、 当 你 感 觉 需 要 撰 写 注 释 时 , 请 先 尝 试 重 构 , 试 着 让 所 有 注 释 都 变 得 多 余 9 、 确 保 所 有 的 测 试 都 自 动 化 , 让 他 们 检 查 自 己 的 测 试 结 果 。 1 0 、 一 套 测 试 就 是 一 个 强 大 的 b u g 侦 测 器 , 能 够 大 大 缩 减 查 找 b u g 所 需 要 的 时 间 。 1 1 、 频 繁 地 运 行 测 试 , 每 次 编 译 请 把 测 试 也 考 虑 进 去 , 每 天 至 少 执 行 每 个 测 试 一 次 1 2 、 每 当 你 收 到 b u g 报 告 , 请 先 写 一 个 单 元 测 试 暴 露 这 个 b u g 1 3 、 编 写 为 臻 完 善 的 测 试 并 实 际 运 行 , 好 过 对 完 美 测 试 的 无 尽 等 待 。 1 4 、 考 虑 可 能 出 错 的 边 界 条 件 , 把 测 试 火 力 集 中 在 那 里 1 5 、 不 要 因 为 测 试 无 法 捕 捉 所 有 b u g 就 不 写 测 试 , 因 为 测 试 的 确 定 可 以 捕 捉 到 大 多 数 b u g 。 一 、 重 构 , 第 一 个 案 例 重 构 第 一 步 : 为 即 将 修 改 的 代 码 建 立 一 组 可 靠 的 测 试 环 境 。 代 码 的 约 小 , 代 码 的 功 能 就 越 容 易 管 理 , 代 码 的 处 理 和 移 动 也 就 越 轻 松 。 代 码 应 该 表 现 自 己 的 目 的 , 这 一 点 非 常 重 要 。 函 数 应 该 放 在 它 所 使 用 的 数 据 的 所 属 对 象 内 。 临 时 变 量 往 往 引 发 问 题 , 它 们 会 导 致 大 量 参 数 被 传 来 传 去 , 而 其 实 完 全 没 这 种 必 要 。 重 构 的 节 奏 : 测 试 、 小 修 改 、 测 试 、 小 修 改 、 测 试 、 小 修 改 。 。 。 。 正 是 这 种 节 奏 让 重 构 得 以 快 速 而 安 全 的 前 进 。 二 、 重 构 原 则 重 构 : 对 软 件 内 容 部 结 构 的 一 种 调 整 , 目 的 是 在 不 改 变 软 件 可 观 察 行 为 的 前 提 下 , 提 高 其 可 理 解 性 , 减 低 其 修 改 成 本 使 用 重 构 技 术 开 发 软 件 时 , 你 把 自 己 的 时 间 分 配 成 两 种 截 然 不 同 的 行 为 : 添 加 新 功 能 , 以 及 重 构 。 添 加 新 功 能 时 , 你 不 应 该 修 改 既 有 代 码 , 只 管 添 加 新 功 能 。 通 过 测 试 ( 并 让 测 试 正 常 运 行 ) , 你 可 以 衡 量 自 己 的 工 作 进 度 。 重 构 时 , 你 就 不 能 再 添 加 功 能 , 只 管 改 进 程 序 结 构 。 此 时 , 你 不 应 该 添 加 任 何 测 试 ( 除 非 发 现 之 前 有 遗 漏 的 东 西 ) , 只 在 绝 对 必 要 ( 用 以 处 理 接 口 变 化 ) 时 才 修 改 测 试 。 1 、 重 构 的 目 的 : 重 构 改 进 软 件 设 计 重 构 使 软 件 更 容 易 理 解 重 构 帮 助 找 到 b u g   重 构 提 高 编 译 速 度 2 、 何 时 重 构 几 乎 任 何 情 况 下 我 都 反 对 专 门 拨 出 时 间 进 行 重 构 。 在 我 看 来 , 重 构 本 身 就 不 是 一 键 应 该 特 别 拔 出 时 间 做 的 事 件 , 重 构 应 该 随 时 随 地 的 进 行 。 你 不 应 该 为 了 重 构 而 重 构 , 你 之 所 以 重 构 , 只 是 因 为 你 想 做 别 的 什 么 事 情 , 而 重 构 可 以 帮 助 你 把 哪 些 事 情 做 好 。 事 不 过 三 , 三 则 重 构 添 加 功 能 时 重 构 修 补 错 误 时 重 构 复 审 代 码 时 重 构 我 们 希 望 程 序 ( 1 ) 容 易 阅 读 ( 2 ) 所 有 逻 辑 都 只 在 唯 一 地 点 指 定 ( 3 ) 新 的 改 动 不 会 危 及 现 有 行 为 ( 4 ) 尽 可 能 简 单 表 达 条 件 逻 辑 重 构 就 是 这 样 一 个 过 程 : 它 在 一 个 目 前 可 运 行 的 程 序 上 进 行 , 在 不 改 变 程 序 行 为 的 前 提 下 使 其 具 备 上 述 美 好 性 质 , 使 我 们 能 够 继 续 保 持 高 速 开 发 , 从 而 增 加 程 序 的 价 值 。 3 、 何 时 不 该 重 构 编 写 新 的 代 码 时 既 有 代 码 根 本 不 能 正 常 运 行 时 , 重 写 , 而 非 重 构 项 目 已 进 最 后 期 限 , 也 应 该 避 免 重 构 4 、 重 构 与 设 计 重 构 和 设 计 彼 此 互 补 。 预 先 设 计 不 能 解 决 所 有 问 题 。 要 建 造 一 个 灵 活 的 解 决 方 案 , 所 需 要 的 成 本 难 以 估 计 。 灵 活 的 解 决 方 案 比 简 单 的 解 决 方 案 复 杂 很 多 , 通 常 也 更 难 维 护 。 重 构 可 以 让 软 件 设 计 向 简 化 前 进 一 大 步 。 重 构 可 以 带 来 更 简 单 的 设 计 , 同 时 又 不 损 失 灵 活 性 , 这 也 降 低 了 设 计 过 程 的 难 度 , 减 轻 了 设 计 压 力 。 5 、 重 构 与 性 能 不 赞 成 为 了 提 高 设 计 的 纯 洁 性 而 忽 视 性 能 , “ 编 写 快 速 软 件 ” 的 秘 密 就 是 : 首 先 写 出 课 调 试 的 软 件 , 然 后 调 整 它 以 求 获 得 足 够 的 速 度 。 三 、 代 码 的 坏 味 道 d u p l i c a t e c o d e 重 复 代 码 l o n g m e t h o d   过 长 函 数 ( 程 序 越 长 越 难 理 解 ) , 如 何 确 认 提 炼 那 一 段 代 码 : 1 ️ ⃣ 寻 找 注 释 , 它 们 通 常 能 指 出 代 码 用 途 和 实 际 实 现 手 法 之 间 的 语 义 距 离 2 ️ ⃣ 条 件 表 达 式 和 循 环 常 常 也 是 提 炼 的 信 号 , 应 该 将 循 环 和 其 内 部 的 代 码 提 炼 到 一 个 独 立 的 函 数 中 。 l a r g e c l a s s 过 大 的 类 1 ) 如 果 想 利 用 单 个 类 做 太 多 事 情 , 其 内 往 往 就 会 出 现 太 多 实 例 变 量 , 你 可 以 运 用 E x t r a c t C l a s s 将 几 个 变 量 一 起 提 炼 至 新 类 。 l o n g P a r a m e t e r L i s t 过 长 参 数 列 太 长 的 参 数 难 以 理 解 , 太 多 参 数 会 照 成 前 后 不 一 致 , 不 易 使 用 , 而 且 一 旦 你 需 要 更 多 数 据 , 就 不 得 不 修 改 它 。 D i v e r g e n t c h a n g e 发 散 式 变 化 如 果 某 个 类 经 常 因 为 不 同 的 原 因 在 不 同 的 方 向 上 发 生 变 化 , d i v e r g e n t c h a n g e 就 出 现 了 s h o t g u n s u r g e r y   散 弹 式 修 改 如 果 每 遇 到 某 种 变 化 , 你 都 必 须 在 许 多 不 同 的 类 中 做 出 许 多 小 修 改 , 就 是 s h o t g u n s e r g e r y f e a t u r e E n v y 依 恋 情 结 函 数 对 某 个 类 的 兴 趣 高 过 对 自 己 所 处 类 的 兴 趣 D a t a C l u m p s 数 据 泥 团 P r i m i t i v e O b s e s s i o n 基 本 类 型 偏 执 对 象 的 一 个 极 大 的 价 值 在 于 : 他 们 模 糊 ( 甚 至 打 破 了 恒 于 基 本 数 据 和 体 积 较 大 类 之 间 的 界 限 ) S w i t c h s t a t e m e n t s s w i t c h 惊 悚 现 身 面 向 对 象 程 序 的 一 个 最 明 显 的 特 征 就 是 : 少 用 s w i t c h 或 者 c a s e 语 句 。 面 向 对 象 中 的 多 态 概 念 可 以 为 此 带 来 优 雅 的 解 决 办 法 。 p a r a l l e l I n h e r i t a n c e h i e r a r c h i e s 平 行 继 承 体 系 每 当 你 为 某 个 类 增 加 一 个 子 类 , 必 须 也 为 另 一 个 类 相 应 增 加 一 个 子 类 , L a z y C l a s s 冗 赘 类 s p e c u l a t i v e g e n e r a l i t y   夸 夸 其 谈 未 来 性 用 不 上 的 装 置 只 会 挡 住 你 的 路 , 所 以 , 搬 开 它 T e m p o r a r y F i e l d 令 人 迷 惑 的 暂 时 字 段 M e s s a g e C h a i n s 过 度 耦 合 的 消 息 链 m i d d l e M a n   中 间 人 过 度 运 用 委 托 I n a p p r o p r i a t e I n t i m a c y 过 于 亲 密 关 系 a l t e r n a t i v e c l a s s e s w i t h D i f f e r e n t I n t e r f a c e s 异 曲 同 工 的 类 两 个 函 数 做 同 一 件 事 , 却 有 着 不 同 的 签 名 I n c o m p l e t e L i b r a r y c l a s s   不 完 美 的 库 类 d a t a c l a s s   纯 稚 的 数 据 类 他 们 拥 有 一 些 字 段 , 以 及 用 于 访 问 读 写 这 些 字 段 的 函 数 , 除 此 之 外 一 无 长 物 r e f u s e d b e q u e s t 被 拒 绝 的 遗 赠 子 类 应 该 继 承 超 类 的 函 数 和 数 据 c o m m e n t s 过 多 的 注 释   四 、 构 筑 测 试 体 系 如 果 你 想 进 行 重 构 , 首 要 前 提 就 是 拥 有 一 个 可 靠 的 测 试 环 境 。 编 写 良 好 的 测 试 程 序 , 可 以 极 大 的 提 高 我 的 编 程 速 度 。 每 个 类 都 应 该 有 一 个 测 试 函 数 , 并 以 他 来 测 试 这 个 类 。 镌 写 测 试 代 码 的 最 有 用 时 机 是 在 开 始 编 程 之 前 编 写 未 完 善 的 测 试 , 并 实 际 运 行 , 好 过 对 完 美 测 试 的 无 尽 等 待 五 、 重 构 列 表 重 构 的 记 录 格 式 每 个 重 构 手 法 都 有 如 下 5 个 部 分 首 先 是 名 称   简 短 概 要 。 简 单 介 绍 此 重 构 手 法 的 使 用 情 景 , 以 及 它 所 做 的 事 情 。 动 机 , 介 绍 “ 为 什 么 需 要 这 个 重 构 ” 和 “ 什 么 情 况 下 不 该 使 用 这 个 重 构 ” 做 法 , 简 明 扼 要 的 一 步 一 步 介 绍 如 何 进 行 此 重 构 范 例 , 以 一 个 十 分 简 单 的 例 子 说 明 此 重 构 如 何 运 作 。 寻 找 引 用 点 你 应 该 检 查 每 一 个 引 用 点 , 确 定 它 的 确 指 向 你 想 要 替 换 的 东 西 六 、 重 新 组 织 函 数 1 、 e x t r a c t M e t h o d 提 炼 函 数 概 要 : 将 一 段 代 码 放 进 独 立 的 函 数 中 , 并 让 函 数 名 称 解 释 该 函 数 的 用 途 。 简 短 而 命 名 良 好 的 函 数 。 函 数 多 长 才 合 适 ? 关 键 在 于 函 数 名 称 和 函 数 本 体 之 间 的 语 义 距 离 , 如 果 提 炼 可 以 强 化 代 码 的 清 晰 度 , 那 么 就 去 做 , 就 算 函 数 名 称 比 提 炼 出 来 的 代 码 还 长 也 无 所 谓 。 以 它 “ 做 什 么 ” 来 命 名 , 而 不 是 以 它 “ 怎 么 做 ” 命 名 2 、 I n l i n e m e t h o d 内 联 函 数 一 个 函 数 的 本 体 与 名 称 同 样 清 楚 易 懂 , 在 函 数 调 用 点 插 入 函 数 本 体 , 然 后 移 除 该 函 数 。 如 果 你 手 上 有 一 大 群 组 织 不 合 理 的 函 数 , 你 可 以 将 它 们 都 内 联 到 一 个 大 函 数 中 , 再 从 中 提 炼 组 织 合 理 的 小 函 数 。 3 、 I n l i n e T e m p 内 联 临 时 变 量 你 有 一 个 临 时 变 量 , 只 被 一 个 简 单 表 达 式 赋 值 过 一 次 , 而 它 妨 碍 了 其 他 重 构 手 法 , 将 所 有 对 该 变 量 的 引 用 动 作 , 替 换 为 对 它 赋 值 的 那 个 表 达 式 。 如 果 这 个 临 时 变 量 并 未 被 申 明 为 f i n a l , 那 就 将 它 申 明 为 f i n a l , 然 后 编 译 , 这 个 可 以 检 查 该 临 时 变 量 是 否 真 的 只 被 赋 值 一 次 。 4 、 r e p l a c e T e m p w i t h Q u e r y 以 查 询 代 替 临 时 变 量 你 的 程 序 以 一 个 临 时 变 量 保 存 某 一 表 达 式 的 运 算 结 果 , 将 这 个 表 达 式 提 炼 到 一 个 独 立 的 函 数 中 , 将 这 个 临 时 变 量 的 所 有 引 用 点 替 换 为 对 新 函 数 的 调 用 , 此 后 , 新 函 数 就 可 以 被 其 他 函 数 使 用 。 临 时 变 量 的 问 题 在 于 : 它 们 是 暂 时 的 , 而 且 只 能 在 所 属 的 函 数 内 使 用 。 确 保 提 炼 出 的 函 数 无 任 何 副 作 用 , 也 就 是 说 该 函 数 并 不 修 改 任 何 对 象 内 容 代 码 组 织 良 好 , 你 往 往 能 够 发 现 更 有 效 的 优 化 方 案 , 如 果 没 有 进 行 重 构 , 好 的 优 化 方 案 就 可 能 与 你 失 之 交 臂 。 5 、 I n t r o d u c e E x p l a i n i n g V a r i a b l e   引 入 解 释 性 变 量 你 有 一 个 复 杂 的 表 达 式 , 将 该 表 达 式 ( 或 者 其 中 一 部 分 ) 的 结 果 放 进 一 个 临 时 变 量 , 以 此 变 量 名 称 来 解 释 表 达 式 用 途 。 表 达 式 有 可 能 非 常 复 杂 而 难 以 理 解 。 这 种 情 况 下 , 临 时 变 量 可 以 帮 助 你 讲 表 达 式 分 解 为 比 较 容 易 管 理 的 形 式 。 6 、 S p l i t T e m p o r a r y V a r i a b l e 分 解 临 时 变 量 你 的 程 序 有 某 个 临 时 变 量 被 赋 值 超 过 一 次 , 它 既 不 是 循 环 变 量 , 也 不 被 用 于 收 集 计 算 结 果 , 针 对 每 次 赋 值 , 创 建 一 个 独 立 、 对 应 的 临 时 变 量 。 7 、 R e m o v e A s s i g n m e n t t o   P a r a m e t e r s 移 除 对 象 参 数 的 赋 值 代 码 对 一 个 参 数 进 行 赋 值 , 以 一 个 临 时 变 量 取 代 该 参 数 的 位 置 。 不 对 参 数 赋 值 8 、 R e p l a c e M e t h o d w i t h M e t h o d O b j e c t 以 函 数 对 象 取 代 函 数 有 一 个 大 函 数 , 其 中 局 部 变 量 的 使 用 使 你 无 法 差 用 e x t r a c t m e t h o d , 将 这 个 函 数 放 进 一 个 单 独 的 对 象 中 , 如 此 以 来 , 局 部 变 量 就 成 了 对 象 内 的 字 段 。 然 后 你 可 以 在 同 一 个 对 象 中 将 这 个 大 型 函 数 分 解 为 多 个 小 函 数 。 9 、 S u b s t i t u t e a l g o r i t h m 替 换 算 法 把 某 个 算 法 替 换 为 另 一 个 更 清 晰 的 算 法 七 、 在 对 象 之 间 搬 移 特 性 1 、 M o v e M e t h o d 搬 移 函 数 程 序 中 , 有 个 函 数 与 其 所 驻 类 之 外 的 另 一 个 类 进 行 更 多 交 流 : 调 用 后 者 , 或 者 被 后 者 调 用 。 在 该 函 数 最 常 引 用 的 类 中 建 立 一 个 有 着 类 似 行 为 的 新 函 数 , 将 旧 函 数 变 成 一 个 单 纯 的 委 托 函 数 , 或 者 是 将 旧 函 数 完 全 移 除 。 检 查 源 类 中 被 源 函 数 所 使 用 的 一 切 特 性 ( 包 括 字 段 和 函 数 ) , 考 虑 它 们 是 否 也 该 被 搬 迁 。 2 、 M o v e F i e l d 搬 移 字 段 程 序 中 , 某 个 字 段 被 其 所 驻 类 之 外 的 另 一 类 更 多 的 用 到 , 在 目 标 类 中 新 建 一 个 字 段 , 修 改 源 字 段 的 所 有 用 户 , 令 它 们 改 用 新 字 段 。 如 果 源 字 段 不 是 p r i v a t e 就 必 须 在 源 类 的 所 有 子 类 中 查 找 源 字 段 的 引 用 点 , 并 进 行 相 应 的 替 换 。 小 步 前 进 3 、 e x t r a c t C l a s s 提 炼 类 某 个 类 做 了 应 该 由 两 个 类 做 的 事 。 建 立 一 个 新 类 , 将 相 关 的 字 段 和 函 数 从 旧 类 搬 移 到 新 类 。 每 次 搬 迁 后 , 编 译 、 测 试 4 、 i n l i n e C l a s s 将 类 内 联 化 某 个 类 没 有 做 太 多 事 情 , 将 这 个 类 的 所 有 特 性 搬 移 到 另 一 个 类 中 , 然 后 移 除 原 类 。 如 果 一 个 类 不 再 承 担 足 够 责 任 、 不 再 有 单 独 存 在 的 理 由 ( 这 通 常 是 因 为 此 前 的 重 构 动 作 移 走 了 这 个 类 的 责 任 ) 。 5 、 H i d e D e l e g a t e 隐 藏 “ 委 托 关 系 ” 客 户 通 过 一 个 委 托 类 来 调 用 另 一 个 对 象 , 在 服 务 类 上 建 立 客 户 所 需 的 所 有 函 数 , 用 以 隐 藏 委 托 关 系 。 封 装 意 味 每 个 对 象 都 应 该 尽 可 能 减 少 了 解 系 统 的 其 他 部 分 , 6 、 R e m o v e M i d d l e M a n 移 除 中 间 人 某 个 类 做 了 过 多 的 简 单 委 托 动 作 , 让 客 户 直 接 调 用 委 托 类 重 构 的 意 义 就 在 于 : 你 永 远 不 必 说 对 不 起 只 要 把 出 问 题 的 地 方 修 补 好 就 行 了 。 7 、 I n t r o d u c e f o r e i g n M e t h o d 引 入 外 加 函 数 需 要 为 提 供 服 务 的 类 增 加 一 个 函 数 , 但 你 无 法 修 改 这 个 类 。 在 客 户 类 中 建 立 一 个 函 数 , 并 以 第 一 参 数 形 式 传 入 一 个 服 务 类 示 例 。 不 要 忘 记 , 外 加 函 数 总 归 是 权 宜 之 计 。 如 果 有 可 能 , 你 依 然 应 该 将 这 些 函 数 搬 移 到 它 们 的 理 想 家 园 。 8 、 I n t r o d u c e L o c a l E x t e n s i o n 引 入 本 地 扩 展 你 需 要 为 服 务 类 提 供 一 些 额 外 函 数 , 但 你 无 法 修 改 这 个 类 , 建 立 一 个 新 类 , 使 它 包 含 这 些 额 外 函 数 。 让 这 个 扩 展 品 成 为 源 类 的 子 类 或 者 包 装 类 。 八 、 重 新 组 织 数 据 1 、 S e l f E n c a p s u l a t e F i e l d   自 封 装 字 段 你 直 接 访 问 一 个 字 段 , 但 与 字 段 间 的 耦 合 关 系 逐 渐 变 得 笨 拙 , 为 这 个 字 段 建 立 取 值 / 设 值 函 数 , 并 且 只 以 这 些 函 数 来 访 问 字 段 。 2 、 R e p l a c e D a t a V a l u e w i t h O b j e c t 以 对 象 取 代 数 据 值 你 有 一 个 数 据 项 , 需 要 与 其 他 数 据 和 行 为 一 起 使 用 才 有 意 义 , 将 数 据 项 变 成 对 象 为 待 替 换 数 值 新 建 一 个 类 , 在 其 中 申 明 一 个 f i n a l 字 段 , 其 类 型 和 源 类 中 的 待 替 换 数 值 类 型 一 样 。 然 后 再 新 类 中 加 入 这 个 字 段 的 取 值 函 数 , 再 加 上 一 个 接 受 此 字 段 为 参 数 的 构 造 函 数 。 值 对 象 应 该 是 不 可 修 改 的 内 容 。 如 果 你 希 望 给 这 个 对 象 加 入 一 下 可 以 修 改 的 数 据 , 你 需 要 将 这 个 对 象 变 成 一 个 引 用 对 象 。 3 、 c h a n g e V a l u e T o R e f e r e n c e   将 值 对 象 改 为 引 用 对 象 你 从 一 个 类 衍 生 出 许 多 彼 此 相 等 的 实 例 , 希 望 将 它 们 替 换 为 同 一 个 对 象 。 将 这 个 值 对 象 变 成 引 用 对 象 。 4 、 c h a n g e R e f e r e n c e t o V a l u e 将 引 用 对 象 改 为 值 对 象 你 有 一 个 引 用 对 象 , 很 小 且 不 可 变 , 而 且 不 易 管 理 , 将 它 变 成 一 个 值 对 象 如 果 该 对 象 目 前 还 不 是 不 可 变 的 , 就 使 用 r e m o v e s e t t i n g M e t h o d 直 到 它 变 成 不 可 变 为 止 如 果 无 法 将 该 对 象 修 改 为 不 可 变 的 , 就 放 弃 使 用 本 项 重 构 。 5 、 R e p l a c e a r r a y w i t h o b j e c t 以 对 象 取 代 数 组 你 有 一 个 数 组 , 其 中 的 元 素 各 自 代 表 不 同 的 东 西 , 以 对 象 替 换 数 组 , 对 于 数 组 中 的 每 一 个 元 素 , 以 一 个 字 段 表 示 。 6 、 D u p l i c a t e o b s e r v e d d a t a 复 制 “ 被 检 视 数 据 ” 你 有 一 些 领 域 数 据 置 身 于 G U I 控 件 中 , 而 领 域 函 数 需 要 访 问 这 些 数 据 , 将 该 数 据 复 制 到 一 个 领 域 对 象 中 , 建 立 一 个 o b s e r v e 模 式 。 已 同 步 领 域 对 象 和 G U I 对 象 内 的 重 复 数 据 。 分 层 良 好 的 系 统 , 应 该 将 处 理 用 户 界 面 和 处 理 业 务 逻 辑 的 代 码 分 开 。 7 、 c h a n g e U n i d i r e c t i o n a l a s s o c i a t i o n t o B i d i r e c t i o n a l 将 单 向 关 联 改 为 双 向 关 联 两 个 类 都 需 要 使 用 对 方 特 性 , 但 其 间 只 有 一 条 单 向 链 接 , 添 加 一 个 反 向 指 针 , 并 使 修 改 函 数 能 够 同 时 更 新 两 条 链 接 。 8 、 c h a n g e B i d i r e c t i o n a l a s s o c i a t i o n t o U n i d i r e c t i o n a l 将 双 向 关 联 改 为 单 向 关 联 两 个 类 之 间 有 双 向 关 联 , 但 其 中 一 个 如 今 不 再 需 要 另 一 个 类 的 特 性 , 去 除 不 必 要 的 关 联 。 9 r e p l a c e m a g i c n u m b e r w i t h S y m b o l i c c o n s t a n t 以 字 面 常 量 取 代 魔 法 数 你 有 一 个 字 面 数 值 , 带 有 特 别 含 义 , 创 建 一 个 常 量 , 根 据 其 意 义 为 他 命 名 , 并 将 上 述 的 字 面 数 值 替 换 为 这 个 常 量 。 1 0 、 e n c a p s u l a t e F i e l d 封 装 字 段 类 中 存 在 一 个 p u b l i c 字 段 , 将 它 声 明 为 p r i v a t e , 并 提 供 相 应 的 访 问 函 数 。 面 向 对 象 的 首 要 原 则 之 一 就 是 封 装 , 或 者 称 为 “ 数 据 隐 藏 ” 1 1 e n c a p s u l a t e c o l l e c t i o n 封 装 集 合 有 个 函 数 返 回 一 个 集 合 。 让 这 个 函 数 返 回 该 集 合 的 一 个 只 读 副 本 , 并 在 这 个 类 中 提 供 添 加 移 除 集 合 元 素 的 函 数 。 取 值 函 数 不 该 返 回 集 合 自 身 , 因 为 这 会 让 用 户 得 以 修 改 集 合 内 容 而 集 合 拥 有 者 一 无 所 知 , 这 也 会 对 用 户 暴 露 过 多 对 象 内 部 数 据 结 构 的 信 息 。 不 应 该 为 这 整 个 集 合 提 供 一 个 设 置 函 数 , 但 应 该 提 供 用 以 为 集 合 添 加 / 移 除 元 素 的 函 数 。 1 2 、 r e p l a c e r e c o r d w i t h d a t a c l a s s   以 数 据 取 代 记 录 你 需 要 面 对 传 统 编 程 环 境 中 的 记 录 结 构 , 为 该 记 录 创 建 一 个 “ 哑 ” 数 据 对 象 。 1 3 、 r e p l a c e t y p e c o d e w i t h c l a s s 以 类 取 代 类 型 码 类 之 中 有 个 数 值 类 型 码 , 但 它 并 不 影 响 类 的 行 为 , 以 一 个 新 的 类 替 换 该 数 值 类 型 码 1 4 r e p l a c e t y p e c o d e w i t h s u b C l a s s 以 子 类 取 代 类 型 码 你 有 一 个 不 可 变 的 类 型 码 , 他 会 影 响 类 的 行 为 , 以 子 类 取 代 这 个 类 型 码 。 为 了 能 够 顺 利 进 行 重 构 , 首 先 应 该 将 类 型 码 替 换 为 可 拥 有 多 态 行 为 的 继 承 体 系 , 这 样 的 一 个 继 承 体 系 应 该 以 类 型 码 的 宿 主 类 为 基 类 , 并 针 对 每 一 种 类 型 码 各 建 立 一 个 子 类 。 1 5 、 r e p l a c e t y p e c o d e w i t h S t a t e / s t r a t e g y 以 s t a t e / s t r a t e g y 取 代 类 型 码 你 有 一 个 类 型 码 , 他 会 影 响 类 的 行 为 , 但 你 无 法 通 过 继 承 手 法 消 除 它 , 以 状 态 对 象 取 代 类 型 码 1 6 、 r e p l a c e s u b c l a s s w i t h f i e l d s 以 字 段 取 代 子 类 个 股 子 类 唯 一 的 差 别 只 在 “ 返 回 常 量 ” 的 函 数 身 上 , 修 改 这 些 函 数 , 是 他 们 返 回 超 类 中 的 某 一 个 ( 新 增 ) 字 段 , 然 后 销 毁 子 类 。 建 立 子 类 的 目 的 是 为 了 增 加 新 特 性 或 者 变 化 其 行 为 。 尽 管 常 量 函 数 有 其 用 途 , 但 若 子 类 中 只 有 常 量 函 数 , 实 在 没 有 足 够 的 存 在 价 值 九 、 简 化 条 件 表 达 式 较 之 过 程 化 程 序 而 言 , 面 向 对 象 程 序 的 条 件 表 达 式 通 常 比 较 少 , 这 是 因 为 很 多 条 件 行 为 都 被 多 态 机 制 处 理 掉 了 , 多 态 之 所 以 更 好 , 是 因 为 调 用 者 无 需 了 解 条 件 行 为 的 细 节 , 因 此 条 件 的 扩 展 更 为 容 易 。 1 、 d e c o m p o s e c o d i t i o n a l 分 解 条 件 表 达 式 你 有 一 个 复 杂 的 条 件 ( i f t h e n e l s e ) 语 句 。 从 i f 、 t h e n 、 e l s e 三 个 段 落 中 分 别 提 炼 出 独 立 函 数 。 对 于 条 件 逻 辑 , 将 每 个 分 支 条 件 分 解 成 新 函 数 还 可 以 突 出 条 件 逻 辑 , 更 清 楚 的 表 明 每 个 分 支 的 作 用 , 并 且 突 出 每 个 分 支 的 原 因 。 2 、 c o n s o l i d a t e c o n d i t i o n a l e x p r e s s i o n 合 并 条 件 表 达 式 一 系 列 条 件 测 试 , 都 得 到 相 同 的 结 果 , 将 这 些 测 试 合 并 为 一 个 条 件 表 达 式 , 并 将 这 个 条 件 表 达 式 提 炼 成 一 个 独 立 函 数 。 将 检 查 条 件 提 炼 成 一 个 独 立 函 数 , 对 于 厘 清 代 码 意 义 非 常 有 用 , 因 为 他 把 描 述 “ 做 什 么 ” 的 语 句 换 成 了 “ 为 什 么 这 样 做 ” 如 果 你 认 为 这 些 检 查 的 确 彼 此 独 立 , 的 确 不 应 该 被 视 为 同 一 次 检 查 , 那 么 就 不 用 使 用 本 项 重 构 。 因 为 在 这 种 情 况 下 , 你 的 代 码 已 经 清 除 表 达 出 自 己 的 意 义 。 3 、 c o n s o l i d a t e d u p l i c a t e c o n d i t i o n a l f r a g m e n t s 合 并 复 杂 的 条 件 片 段 在 条 件 表 达 式 的 每 一 个 分 支 上 有 着 相 同 的 一 段 代 码 。 将 这 段 复 杂 代 码 搬 移 到 条 件 表 达 式 之 外 。 4 r e m o v e c o n t r o l f l a g   移 除 控 制 标 记 在 一 系 列 布 尔 表 达 式 中 , 某 个 变 量 带 有 “ 控 制 标 记 ( c o n t r o l f l a g ) ” 的 作 用 , 用 b r e a k 语 句 或 者 r e t u r n 语 句 取 代 控 制 标 记 5 、 r e p l a c e n e s t e d c o n d i t i o n a l w i t h g u a r d c l a u s e 以 卫 语 句 取 代 嵌 套 表 达 式 函 数 中 的 条 件 逻 辑 使 人 难 以 看 清 正 常 的 执 行 路 径 , 使 用 卫 语 句 表 现 所 有 特 殊 情 况 。 如 果 两 条 分 支 都 是 正 常 行 为 , 就 应 该 使 用 形 如 i f . . e l s e . . 的 条 件 表 达 式 ; 如 果 某 个 条 件 极 其 罕 见 , 就 应 该 单 独 检 查 该 条 件 , 并 在 改 条 件 为 真 时 立 刻 从 函 数 中 返 回 。 这 样 的 单 独 检 查 常 常 被 称 为 “ 卫 语 句 ” 。 给 某 一 条 分 支 以 特 别 的 重 视 。 卫 语 句 要 不 就 从 函 数 中 返 回 , 要 不 就 抛 出 一 个 异 常 。 6 、 r e p l a c e c o n d i t i o n a l w i t h p o l y m o r p h i s m 以 多 态 取 代 条 件 表 达 式 有 一 个 条 件 表 达 式 , 他 根 据 对 象 类 型 的 不 同 而 选 择 不 同 的 行 为 。 将 这 个 条 件 表 达 式 的 每 一 个 分 支 放 进 一 个 子 类 内 的 覆 写 函 数 中 , 然 后 将 原 始 函 数 声 明 为 抽 象 函 数 。 7 、 I n t r o d u c e N u l l o b j e c t 引 入 n u l l 对 象 你 需 要 再 三 检 查 某 个 对 象 是 否 为 n u l l , 将 n u l l 值 替 换 为 n u l l 对 象 8 I n t r o d u c e a s s e r t i o n 引 入 断 言 某 段 代 码 需 要 对 程 序 状 态 做 出 某 种 假 设 , 以 断 言 明 确 表 现 这 种 假 设 注 意 , 不 要 滥 用 断 言 。 请 不 要 使 用 它 来 检 查 “ 你 认 为 应 该 为 真 ” 的 条 件 , 请 只 使 用 它 来 检 查 “ 一 定 必 须 为 真 ” 的 条 件 。 十 、 简 化 函 数 调 用 明 确 的 将 “ 修 改 对 象 状 态 ” 的 函 数 ( 修 改 函 数 ) 和 “ 查 询 对 象 状 态 ” 的 函 数 ( 查 询 函 数 ) 分 开 设 计 。 良 好 的 接 口 只 向 用 户 展 示 必 选 展 示 的 东 西 。 如 果 一 个 接 口 暴 露 过 多 的 细 节 , 你 可 以 将 不 必 要 暴 露 的 东 西 隐 藏 起 来 , 从 而 改 进 接 口 的 质 量 。 1 r e n a m e M e t h o d 函 数 改 名 函 数 的 名 称 未 能 揭 示 函 数 的 用 途 , 修 改 函 数 名 称 。 给 函 数 命 名 有 个 好 方 法 : 首 先 考 虑 应 该 给 这 个 函 数 写 上 一 句 怎 样 的 注 释 , 然 后 想 办 法 将 注 释 变 成 函 数 名 。 想 成 为 一 个 真 正 的 编 程 高 手 , 起 名 的 水 平 是 至 关 重 要 的 。 2 、 a d d p a r a m e t e r   添 加 参 数 某 个 函 数 需 要 从 调 用 端 得 到 更 多 的 信 息 。 为 此 函 数 添 加 一 个 对 象 参 数 , 让 改 对 象 参 数 带 进 所 需 要 的 信 息 。 除 了 添 加 参 数 之 外 , 你 常 常 还 有 其 他 选 择 , 只 要 可 能 , 其 他 选 择 都 比 添 加 参 数 要 好 , 因 为 它 们 不 会 增 加 参 数 列 的 长 度 。 3 、 r e m o v e p a r a m e t e r 移 除 参 数 函 数 主 体 不 再 需 要 某 个 参 数 , 将 改 参 数 去 除 。 参 数 代 表 着 函 数 所 需 要 的 信 息 , 不 同 的 参 数 值 有 不 同 的 意 义 、 。 4 、 s e p a r a t e Q u e r y f r o m m o d i f i e r   将 查 询 函 数 和 修 改 函 数 分 离 某 个 函 数 即 返 回 对 象 状 态 值 , 又 修 改 对 象 状 态 , 建 立 两 个 不 同 的 函 数 , 其 中 一 个 负 责 查 询 , 另 一 个 负 责 修 改 。 任 何 有 返 回 值 得 函 数 , 都 不 应 该 有 看 得 见 的 副 作 用 。 如 果 调 用 者 将 返 回 值 赋 值 给 了 一 个 临 时 变 量 , 你 应 该 去 掉 这 个 临 时 变 量 5 、 p a r a m e t e r i z e m e t h o d   令 函 数 携 带 参 数 若 干 函 数 做 了 类 似 的 工 作 , 但 在 函 数 本 体 中 却 包 含 了 不 同 的 值 。 建 立 单 一 函 数 , 以 参 数 表 达 那 些 不 同 的 值 。 以 “ 可 将 少 量 数 值 视 为 参 数 ” 为 依 据 , 找 出 带 有 重 复 性 的 代 码 6 、 r e p l a c e p a r a m e t e r w i t h e x p l i c i t m e t h o d s 以 明 确 函 数 取 代 参 数 你 有 一 个 函 数 , 其 中 完 全 取 决 于 参 数 值 而 采 用 不 同 的 行 为 。 针 对 该 参 数 的 每 一 种 可 能 值 , 建 立 一 个 独 立 函 数 如 果 某 个 参 数 有 多 种 可 能 的 值 , 而 函 数 内 又 以 条 件 表 达 式 检 查 这 些 参 数 值 , 并 根 据 不 同 参 数 值 做 出 不 同 的 行 为 , 那 么 久 应 该 使 用 本 项 重 构 、 但 是 如 果 参 数 值 不 会 对 函 数 行 为 有 太 多 影 响 , 你 就 不 应 该 使 用 本 项 重 构 7 、 p r e s e r v e w h o l e o b j e c t 保 持 对 象 完 整 你 从 某 个 对 象 中 取 出 若 干 值 , 将 它 们 作 为 某 一 次 函 数 调 用 时 的 参 数 , 改 为 传 递 整 个 对 象 。 如 果 这 会 使 你 的 依 赖 结 构 恶 化 , 那 么 久 不 该 使 用 本 项 重 构 8 、 r e p l a c e p a r a m e t e r w i t h m e t h o d s 以 函 数 取 代 参 数 对 象 调 用 某 个 函 数 , 并 将 所 得 结 果 作 为 参 数 , 传 递 给 另 一 个 函 数 , 而 接 受 该 参 数 的 函 数 本 身 也 能 够 调 用 前 一 个 函 数 。 让 参 数 接 受 者 去 掉 该 项 参 数 , 并 直 接 调 用 前 一 个 函 数 。 如 果 有 必 要 将 参 数 的 计 算 过 程 提 炼 到 一 个 独 立 函 数 中 。 9 i n t r o d u c e p a r a m e t e r o b j e c t   引 入 参 数 对 象 有 些 参 数 总 是 很 自 然 的 同 事 出 现 , 以 一 个 对 象 取 代 这 些 参 数 、 参 数 对 象 中 的 值 可 以 把 其 中 所 有 的 字 段 都 设 置 为 f i n a l , 只 能 由 构 造 函 数 来 赋 值 。 这 样 可 以 避 免 很 多 困 扰 。 1 0 r e m o v e s e t t i n g m e t h o d 移 除 设 置 函 数 类 中 的 某 个 字 段 应 该 在 对 象 创 建 时 被 设 值 , 然 后 就 不 再 改 变 。 去 掉 该 字 段 的 所 有 设 值 函 数 如 果 你 为 某 个 字 段 提 供 了 设 值 函 数 , 这 就 暗 示 这 个 字 段 可 以 被 改 变 。 1 1 h i d e m e t h o d 隐 藏 函 数 有 一 个 函 数 , 从 来 没 有 被 其 他 任 何 类 用 到 , 将 这 个 函 数 改 为 p r i v a t e 1 2 、 r e p l a c e c o n s t r u c t o r w i t h f a c t o r y m e t h o d 你 希 望 在 创 建 对 象 时 不 仅 仅 是 做 简 单 的 建 构 动 作 。 将 构 造 函 数 替 换 为 工 厂 函 数 。 1 3 、 e n c a p s u l a t e d o w n c a s t   封 装 向 下 转 型 某 个 函 数 返 回 的 对 象 , 需 要 有 函 数 调 用 者 执 行 向 下 转 型 , 将 向 下 转 型 动 作 移 动 到 函 数 中 1 4 、 r e p l a c e e r r o r c o d e w i t h e x c e p t i o n 以 异 常 取 代 错 误 码 某 个 函 数 返 回 一 个 特 定 的 代 码 , 用 以 表 示 某 个 错 误 情 况 , 改 用 异 常 1 5 r e p l a c e e x c e p t i o n w i t h t e s t   以 测 试 代 替 异 常 面 对 一 个 调 用 者 可 预 先 检 查 的 条 件 , 你 抛 出 了 一 个 异 常 。 修 改 调 用 者 , 是 它 在 调 用 函 数 之 前 先 做 检 查 。 十 一 、 处 理 概 况 关 系 1 、 p u l l u p f i e l d 两 个 子 类 拥 有 相 同 的 字 段 , 将 该 字 段 移 至 超 类 本 项 重 构 从 两 方 面 减 少 重 复 : 首 先 它 去 除 了 重 复 的 数 据 申 明 , 其 次 它 使 你 可 以 将 使 用 该 字 段 的 行 为 从 子 类 移 至 超 类 , 从 而 去 除 重 复 的 行 为 。 2 、 p u l l u p m e t h o d 函 数 上 移 有 些 函 数 , 在 各 个 子 类 中 产 生 完 全 相 同 的 结 果 , 将 该 函 数 移 至 超 类 只 要 系 统 内 出 现 重 复 , 你 就 会 面 临 “ 修 改 其 中 一 个 缺 未 能 修 改 另 一 个 ” 的 风 险 如 果 这 些 函 数 看 上 去 做 了 相 同 的 事 情 , 但 是 并 不 完 全 一 致 , 可 以 使 用 s u b s t i t u t e 爱 老 公 人 让 它 们 变 得 完 全 一 致 。 3 、 p u l l u p c o n s t r u c t o r b o d y   构 造 函 数 本 体 上 移 在 各 个 子 类 中 拥 有 一 些 构 造 函 数 , 它 们 的 本 体 几 乎 完 全 一 致 。 在 超 类 中 新 建 一 个 构 造 函 数 , 并 在 子 类 构 造 函 数 中 调 用 它 。 4 、 p u s h d o w n m e t h o d 函 数 下 移 超 类 中 的 某 个 函 数 只 与 一 部 分 ( 而 非 全 部 ) 子 类 有 关 。 将 这 个 函 数 移 到 相 关 的 那 些 子 类 中 去 。   5 、 p u s h d o w n f i e l d 字 段 下 移 超 类 中 某 个 字 段 只 被 部 分 ( 而 非 全 部 ) 子 类 用 到 , 将 这 个 字 段 移 到 需 要 它 的 那 些 子 类 中 去 。 6 、 e x t r a c t s u b c l a s s 提 炼 子 类 类 中 的 某 些 特 性 只 能 被 某 些 ( 而 非 全 部 ) 实 例 用 到 , 新 建 一 个 子 类 , 将 上 面 所 说 的 那 一 部 分 特 性 移 到 子 类 中 。 7 、 e x t r a c t s u p e r C l a s s 提 炼 超 类 两 个 类 有 相 似 特 性 , 为 这 两 个 类 建 立 一 个 超 类 , 将 相 同 特 性 移 至 超 类 8 、 e x t r a c t i n t e r f a c e 提 炼 接 口 若 干 客 户 使 用 类 接 口 中 的 同 一 子 集 , 或 者 两 个 类 的 接 口 有 部 分 相 同 。 将 相 同 的 子 集 提 炼 到 一 个 独 立 接 口 中 。 9 、 c o l l a p s e h i e r a r c h y 折 叠 继 承 体 系 超 类 和 子 类 之 间 无 太 大 区 别 。 将 它 们 和 为 一 体 。 1 0 、 f o r m t e m p l a t e m e t h o d 塑 造 模 板 函 数 有 一 些 子 类 , 其 中 相 应 的 某 些 函 数 以 相 同 顺 序 执 行 类 似 的 操 作 , 但 各 个 操 作 的 细 节 上 有 所 不 同 。 将 这 些 操 作 分 别 放 进 独 立 函 数 中 , 并 保 持 它 们 都 有 相 同 的 签 名 , 于 是 原 函 数 也 就 变 得 相 同 了 , 然 后 将 原 函 数 上 移 至 超 类 。 1 1 、 r e p l a c e i n h e r i t a n c e w i t h d e l e g a t i o n   以 委 托 取 代 继 承 某 个 子 类 只 使 用 了 超 类 接 口 中 的 一 部 分 , 或 是 根 本 不 需 要 继 承 而 来 的 数 据 。 在 子 类 中 新 建 一 个 字 段 用 以 保 存 超 类 , 调 整 子 类 函 数 , 令 他 该 为 委 托 超 类 , 然 后 去 掉 两 者 之 间 的 继 承 关 系 1 2 r e p l a c e d e l e g a t i o n w i t h i n h e r i t a n c e 以 继 承 取 代 委 托 你 在 两 个 类 之 间 使 用 委 托 关 系 , 并 经 常 为 整 个 接 口 编 写 许 多 简 单 至 极 的 委 托 函 数 , 让 委 托 类 继 承 受 托 类 。 十 二 、 大 型 重 构 1 、 t e a s e a p a r t i n h e r i t a n c e   梳 理 并 分 解 继 承 体 系 某 个 继 承 体 系 同 时 承 担 两 项 责 任 。 建 立 两 个 继 承 体 系 , 并 通 过 委 托 关 系 让 其 中 一 个 可 以 调 用 另 一 个 。 2 、 c o n v e r t p r o c e d u r a l d e s i g n t o o b j e c t s 将 过 程 化 设 计 转 化 为 对 象 设 计 你 手 上 有 一 些 传 统 过 程 化 风 格 的 代 码 。 将 数 据 记 录 变 成 对 象 , 将 大 块 的 行 为 分 为 小 块 , 并 将 行 为 移 入 相 关 对 象 中 。 3 、 s e p a r a t e d o m a i n f r o m p r e s e n t a t i o n 将 领 域 和 表 述 / 显 示 分 离 某 些 G U I 类 之 中 包 含 了 领 域 逻 辑 。 将 领 域 逻 辑 分 离 出 来 , 为 它 们 建 立 独 立 的 领 域 类 。 4 、 e x t r a c t h i e r a r c h y 提 炼 继 承 体 系 你 有 某 个 类 做 了 太 多 工 作 , 其 中 一 部 分 工 作 是 以 大 量 条 件 表 达 式 完 成 的 。 建 立 继 承 体 系 , 以 一 个 子 类 表 示 一 种 特 殊 情 况 。 将 一 个 极 度 混 乱 的 设 计 方 案 梳 理 出 来 , 可 能 需 要 数 周 甚 至 数 月 的 时 间 。 你 可 以 先 进 行 本 重 构 中 的 一 些 简 易 步 骤 , 稍 微 休 息 一 下 , 再 花 几 天 时 间 编 写 一 些 能 体 现 产 出 的 代 码 。 十 三 、 重 构 , 复 用 与 实 现 如 何 把 重 构 和 软 件 业 者 ( 特 别 是 那 些 开 发 大 型 项 目 的 软 件 业 者 ) 的 日 常 事 务 结 合 起 来 通 过 重 新 组 织 软 件 结 构 , 重 构 使 设 计 思 路 更 详 尽 明 确 。 重 构 被 用 于 开 发 框 架 、 抽 取 可 复 用 组 件 、 使 软 件 框 架 更 清 晰 、 使 新 功 能 的 增 加 更 容 易 。 重 构 可 以 帮 助 你 充 分 利 用 以 前 的 投 资 , 减 少 重 复 劳 动 , 使 程 序 更 简 洁 有 力 。 应 对 并 处 理 变 化 , 使 软 件 开 发 的 根 本 复 杂 性 之 一 重 构 也 可 以 带 来 短 期 利 益 , 让 软 件 更 容 易 修 改 、 更 易 维 护 。 重 构 只 是 一 种 手 段 , 不 是 目 的 。 它 是 “ ” 程 序 员 或 者 程 序 开 发 团 队 如 何 开 发 并 维 护 自 己 软 件 ” 这 一 更 宽 广 场 景 的 一 部 分 。 对 员 工 进 行 培 训 、 尽 量 获 取 短 期 利 益 、 减 少 开 销 、 安 全 引 入 新 技 术 十 四 、 重 构 工 具 重 构 的 最 大 障 碍 之 一 就 是 : 几 乎 没 有 工 具 对 它 提 供 支 持 。 r e f a c t o r i n g b r o w s e r 工 具 十 五 、 小 结 这 些 技 术 如 此 精 彩 , 可 它 们 却 仅 仅 只 是 个 开 始 : 因 为 你 还 不 知 道 何 时 应 该 使 用 它 们 、 合 适 不 应 该 使 用 ; 何 时 开 始 、 何 时 停 止 ; 何 时 前 进 、 何 时 等 待 。 使 重 构 能 够 成 功 的 , 不 是 前 面 各 种 独 立 的 技 术 , 而 是 这 种 节 奏 1 、 随 时 挑 一 个 目 标 : 某 个 地 方 的 代 码 开 始 发 臭 , 你 就 应 该 将 问 题 解 决 掉 。 你 应 该 朝 目 标 前 进 , 达 成 目 标 后 即 停 止 。 2 、 没 把 握 就 停 下 来 : 朝 目 标 前 进 的 过 程 中 , 可 能 会 有 这 样 的 时 候 : 你 无 法 证 明 你 所 做 的 一 切 能 够 保 成 程 序 原 本 的 语 义 。 此 时 你 就 应 该 停 下 来 , 如 果 代 码 已 经 改 善 了 一 些 , 就 发 布 你 的 成 果 ; 如 果 没 有 , 就 撤 销 所 有 的 修 改 。 3 : 学 习 原 路 返 回 。 重 构 的 原 则 不 好 学 , 而 且 很 容 易 遗 矢 准 头 。 如 果 重 构 已 经 失 控 , 你 应 该 回 到 最 近 一 个 没 有 出 错 的 状 态 , 然 后 逐 一 重 复 刚 才 做 过 的 重 构 , 每 次 重 构 之 后 一 定 要 运 行 所 有 测 试 。 4 、 二 重 奏 : 和 别 人 一 起 重 构 、 可 以 收 到 更 好 的 效 果 重 构 时 你 的 目 标 之 一 就 是 保 持 代 码 的 功 能 完 全 不 变 , 即 不 多 也 不 少 。 对 于 那 些 需 要 修 改 的 东 西 , 列 个 清 单 把 它 们 记 录 下 来 , 需 要 添 加 或 者 修 改 的 测 试 用 例 , 需 要 进 行 的 其 他 重 构 、 需 要 撰 写 的 文 档 、 需 要 画 的 图 … … 都 暂 时 记 在 卡 上 , 这 样 就 不 会 忘 掉 这 些 需 要 完 成 的 工 作 。 千 万 别 让 这 些 工 作 打 乱 你 手 上 的 工 作 。 重 构 完 成 之 后 , 再 去 做 这 些 事 情 也 不 迟 。 优 惠 劵 寒 生 1 9 8 8 关 注 关 注 1 5 点 赞 踩 2 1 收 藏 觉 得 还 不 错 ? 一 键 收 藏 知 道 了 0 评 论 《 重 构 改 善 既 有 代 码 》 1 、 如 果 你 发 现 自 己 需 要 为 程 序 添 加 一 个 特 性 , 而 代 码 结 构 使 你 无 法 很 方 便 地 达 成 目 的 , 那 就 先 重 构 哪 个 程 序 , 使 特 性 的 添 加 比 较 容 易 的 进 行 , 然 后 再 添 加 特 性 2 、 重 构 前 , 先 检 查 自 己 是 否 有 一 套 可 靠 的 测 试 机 制 , 这 些 测 试 必 须 有 自 我 检 验 能 力 3 、 重 构 技 术 就 是 以 微 小 的 步 伐 修 改 程 序 , 如 果 你 犯 下 错 误 , 很 容 易 便 可 发 现 它 4 、 任 何 一 个 傻 瓜 都 能 写 出 计 算 机 可 以 理 解 的 代 码 , 唯 有 写 出 人 类 容 易 理 解 的 代 码 , 才 是 优 秀 的 程 序 员 5 、 重 构 ( 名 词 ) : 对 软 件 内 部 结 构 的 一 种 调 整 , 目 的 是 在 不 改 变 软 件 可 观 察 行 为 的 前 提 下 , 提 高 其 可 理 解 性 , 降 低 其 修 改 成 本 。 复 制 链 接 扫 一 扫 重 构 改 善 既 有 代 码 的 设 计 . e p u b 1 0 2 3 “ M a r t i n F o w l e r 和 本 书 另 几 位 作 者 清 楚 揭 示 了 重 构 过 程 , 他 们 为 面 向 对 象 软 件 开 发 所 做 的 贡 献 , 难 以 衡 量 。 本 书 解 释 重 构 的 原 理 ( p r i n c i p l e s ) 和 最 佳 实 践 方 式 ( b e s t p r a c t i c e s ) , 并 指 出 何 时 何 地 你 应 该 开 始 挖 掘 你 的 代 码 以 求 改 善 。 本 书 的 核 心 是 壹 份 完 整 的 重 构 名 录 ( c a t a l o g o f r e f a c t o r i n g ) , 其 中 每 壹 项 都 介 绍 壹 种 经 过 实 证 的 代 码 变 换 手 法 ( c o d e t r a n s f o r m a t i o n ) 的 动 机 和 技 术 。 某 些 项 目 如 E x t r a c t M e t h o d 和 M o v e F i e l d 看 起 来 可 能 很 浅 显 , 但 不 要 掉 以 轻 心 , 因 为 理 解 这 类 技 术 正 是 有 条 不 紊 地 进 行 重 构 的 关 键 。 本 书 所 提 的 这 些 重 构 准 则 将 帮 助 你 壹 次 壹 小 步 地 修 改 你 的 代 码 , 这 就 减 少 了 过 程 中 的 风 险 。 很 快 你 就 会 把 这 些 重 构 准 则 和 其 名 称 加 入 自 己 的 开 发 词 典 中 , 并 且 朗 朗 上 口 。 ” 重 构 改 善 既 有 代 码 的 设 计 0 6 1 0 第 1 章   重 构 , 第 一 个 案 例 1 1 . 1   起 点 1 1 . 2   重 构 的 第 一 步 7 1 . 3   分 解 并 重 组 s t a t e m e n t ( ) 8 1 . 4   运 用 多 态 取 代 与 价 格 相 关 的 条 件 逻 辑 3 4 1 . 5   结 语 5 2 第 2 章   重 构 原 则 5 3 2 . 1   何 谓 重 构 5 3 2 . 2   为 何 重 构 5 5 2 . 3   何 时 重 构 5 7 2 . 4   怎 么 对 经 理 说 6 0 2 . 5   重 构 的 难 题 6 2 2 . 6   重 构 与 设 计 6 6 2 . 7   重 构 与 性 能 6 9 2 . 8   重 构 起 源 何 处 7 1 第 3 章   代 码 的 坏 味 道 7 5 3 . 1   D u p l i c a t e d C o d e ( 重 复 代 码 ) 7 6 3 . 2   L o n g M e t h o d ( 过 长 函 数 ) 7 6 3 . 3   L a r g e C l a s s ( 过 大 的 类 ) 7 8 3 . 4   L o n g P a r a m e t e r L i s t ( 过 长 参 数 列 ) 7 8 3 . 5   D i v e r g e n t C h a n g e ( 发 散 式 变 化 ) 7 9 3 . 6   S h o t g u n S u r g e r y ( 霰 弹 式 修 改 ) 8 0 3 . 7   F e a t u r e E n v y ( 依 恋 情 结 ) 8 0 3 . 8   D a t a C l u m p s ( 数 据 泥 团 ) 8 1 3 . 9   P r i m i t i v e O b s e s s i o n ( 基 本 类 型 偏 执 ) 8 1 3 . 1 0   S w i t c h S t a t e m e n t s ( s w i t c h 惊 悚 现 身 ) 8 2 3 . 1 1   P a r a l l e l I n h e r i t a n c e H i e r a r c h i e s ( 平 行 继 承 体 系 ) 8 3 3 . 1 2   L a z y C l a s s ( 冗 赘 类 ) 8 3 3 . 1 3   S p e c u l a t i v e G e n e r a l i t y ( 夸 夸 其 谈 未 来 性 ) 8 3 3 . 1 4   T e m p o r a r y F i e l d ( 令 人 迷 惑 的 暂 时 字 段 ) 8 4 3 . 1 5   M e s s a g e C h a i n s ( 过 度 耦 合 的 消 息 链 ) 8 4 3 . 1 6   M i d d l e M a n ( 中 间 人 ) 8 5 3 . 1 7   I n a p p r o p r i a t e I n t i m a c y ( 狎 昵 关 系 ) 8 5 3 . 1 8   A l t e r n a t i v e C l a s s e s w i t h D i f f e r e n t I n t e r f a c e s ( 异 曲 同 工 的 类 ) 8 5 3 . 1 9   I n c o m p l e t e L i b r a r y C l a s s ( 不 完 美 的 库 类 ) 8 6 3 . 2 0   D a t a C l a s s ( 纯 稚 的 数 据 类 ) 8 6 3 . 2 1   R e f u s e d B e q u e s t ( 被 拒 绝 的 遗 赠 ) 8 7 3 . 2 2   C o m m e n t s ( 过 多 的 注 释 ) 8 7 第 4 章   构 筑 测 试 体 系 8 9 4 . 1   自 测 试 代 码 的 价 值 8 9 4 . 2   J U n i t 测 试 框 架 9 1 4 . 3   添 加 更 多 测 试 9 7 第 5 章   重 构 列 表 1 0 3 5 . 1   重 构 的 记 录 格 式 1 0 3 5 . 2   寻 找 引 用 点 1 0 5 5 . 3   这 些 重 构 手 法 有 多 成 熟 1 0 6 第 6 章   重 新 组 织 函 数 1 0 9 6 . 1   E x t r a c t M e t h o d ( 提 炼 函 数 ) 1 1 0 6 . 2   I n l i n e M e t h o d ( 内 联 函 数 ) 1 1 7 6 . 3   I n l i n e T e m p ( 内 联 临 时 变 量 ) 1 1 9 6 . 4   R e p l a c e T e m p w i t h Q u e r y ( 以 查 询 取 代 临 时 变 量 ) 1 2 0 6 . 5   I n t r o d u c e E x p l a i n i n g V a r i a b l e ( 引 入 解 释 性 变 量 ) 1 2 4 6 . 6   S p l i t T e m p o r a r y V a r i a b l e ( 分 解 临 时 变 量 ) 1 2 8 6 . 7   R e m o v e A s s i g n m e n t s t o P a r a m e t e r s ( 移 除 对 参 数 的 赋 值 ) 1 3 1 6 . 8   R e p l a c e M e t h o d w i t h M e t h o d O b j e c t ( 以 函 数 对 象 取 代 函 数 ) 1 3 5 6 . 9   S u b s t i t u t e A l g o r i t h m ( 替 换 算 法 ) 1 3 9 第 7 章   在 对 象 之 间 搬 移 特 性 1 4 1 7 . 1   M o v e M e t h o d ( 搬 移 函 数 ) 1 4 2 7 . 2   M o v e F i e l d ( 搬 移 字 段 ) 1 4 6 7 . 3   E x t r a c t C l a s s ( 提 炼 类 ) 1 4 9 7 . 4   I n l i n e C l a s s ( 将 类 内 联 化 ) 1 5 4 7 . 5   H i d e D e l e g a t e ( 隐 藏 “ 委 托 关 系 ” ) 1 5 7 7 . 6   R e m o v e M i d d l e M a n ( 移 除 中 间 人 ) 1 6 0 7 . 7   I n t r o d u c e F o r e i g n M e t h o d ( 引 入 外 加 函 数 ) 1 6 2 7 . 8   I n t r o d u c e L o c a l E x t e n s i o n ( 引 入 本 地 扩 展 ) 1 6 4 第 8 章   重 新 组 织 数 据 1 6 9 8 . 1   S e l f E n c a p s u l a t e F i e l d ( 自 封 装 字 段 ) 1 7 1 8 . 2   R e p l a c e D a t a V a l u e w i t h O b j e c t ( 以 对 象 取 代 数 据 值 ) 1 7 5 8 . 3   C h a n g e V a l u e t o R e f e r e n c e ( 将 值 对 象 改 为 引 用 对 象 ) 1 7 9 8 . 4   C h a n g e R e f e r e n c e t o V a l u e ( 将 引 用 对 象 改 为 值 对 象 ) 1 8 3 8 . 5   R e p l a c e A r r a y w i t h O b j e c t ( 以 对 象 取 代 数 组 ) 1 8 6 8 . 6   D u p l i c a t e O b s e r v e d D a t a ( 复 制 “ 被 监 视 数 据 ” ) 1 8 9 8 . 7   C h a n g e U n i d i r e c t i o n a l A s s o c i a t i o n t o B i d i r e c t i o n a l ( 将 单 向 关 联 改 为 双 向 关 联 ) 1 9 7 8 . 8   C h a n g e B i d i r e c t i o n a l A s s o c i a t i o n t o U n i d i r e c t i o n a l ( 将 双 向 关 联 改 为 单 向 关 联 ) 2 0 0 8 . 9   R e p l a c e M a g i c N u m b e r w i t h S y m b o l i c C o n s t a n t ( 以 字 面 常 量 取 代 魔 法 数 ) 2 0 4 8 . 1 0   E n c a p s u l a t e F i e l d ( 封 装 字 段 ) 2 0 6 8 . 1 1   E n c a p s u l a t e C o l l e c t i o n ( 封 装 集 合 ) 2 0 8 8 . 1 2   R e p l a c e R e c o r d w i t h D a t a C l a s s ( 以 数 据 类 取 代 记 录 ) 2 1 7 8 . 1 3   R e p l a c e T y p e C o d e w i t h C l a s s ( 以 类 取 代 类 型 码 ) 2 1 8 8 . 1 4   R e p l a c e T y p e C o d e w i t h S u b c l a s s e s ( 以 子 类 取 代 类 型 码 ) 2 2 3 8 . 1 5   R e p l a c e T y p e C o d e w i t h S t a t e / S t r a t e g y ( 以 S t a t e / S t r a t e g y 取 代 类 型 码 ) 2 2 7 8 . 1 6   R e p l a c e S u b c l a s s w i t h F i e l d s ( 以 字 段 取 代 子 类 ) 2 3 2 第 9 章   简 化 条 件 表 达 式 2 3 7 9 . 1   D e c o m p o s e C o n d i t i o n a l ( 分 解 条 件 表 达 式 ) 2 3 8 9 . 2   C o n s o l i d a t e C o n d i t i o n a l E x p r e s s i o n ( 合 并 条 件 表 达 式 ) 2 4 0 9 . 3   C o n s o l i d a t e D u p l i c a t e C o n d i t i o n a l F r a g m e n t s ( 合 并 重 复 的 条 件 片 段 ) 2 4 3 9 . 4   R e m o v e C o n t r o l F l a g ( 移 除 控 制 标 记 ) 2 4 5 9 . 5   R e p l a c e N e s t e d C o n d i t i o n a l w i t h G u a r d C l a u s e s ( 以 卫 语 句 取 代 嵌 套 条 件 表 达 式 ) 2 5 0 9 . 6   R e p l a c e C o n d i t i o n a l w i t h P o l y m o r p h i s m ( 以 多 态 取 代 条 件 表 达 式 ) 2 5 5 9 . 7   I n t r o d u c e N u l l O b j e c t ( 引 入 N u l l 对 象 ) 2 6 0 9 . 8   I n t r o d u c e A s s e r t i o n ( 引 入 断 言 ) 2 6 7 第 1 0 章   简 化 函 数 调 用 2 7 1 1 0 . 1   R e n a m e M e t h o d ( 函 数 改 名 ) 2 7 3 1 0 . 2   A d d P a r a m e t e r ( 添 加 参 数 ) 2 7 5 1 0 . 3   R e m o v e P a r a m e t e r ( 移 除 参 数 ) 2 7 7 1 0 . 4   S e p a r a t e Q u e r y f r o m M o d i f i e r ( 将 查 询 函 数 和 修 改 函 数 分 离 ) 2 7 9 1 0 . 5   P a r a m e t e r i z e M e t h o d ( 令 函 数 携 带 参 数 ) 2 8 3 1 0 . 6   R e p l a c e P a r a m e t e r w i t h E x p l i c i t M e t h o d s ( 以 明 确 函 数 取 代 参 数 ) 2 8 5 1 0 . 7   P r e s e r v e W h o l e O b j e c t ( 保 持 对 象 完 整 ) 2 8 8 1 0 . 8   R e p l a c e P a r a m e t e r w i t h M e t h o d s ( 以 函 数 取 代 参 数 ) 2 9 2 1 0 . 9   I n t r o d u c e P a r a m e t e r O b j e c t ( 引 入 参 数 对 象 ) 2 9 5 1 0 . 1 0   R e m o v e S e t t i n g M e t h o d ( 移 除 设 值 函 数 ) 3 0 0 1 0 . 1 1   H i d e M e t h o d ( 隐 藏 函 数 ) 3 0 3 1 0 . 1 2   R e p l a c e C o n s t r u c t o r w i t h F a c t o r y M e t h o d ( 以 工 厂 函 数 取 代 构 造 函 数 ) 3 0 4 1 0 . 1 3   E n c a p s u l a t e D o w n c a s t ( 封 装 向 下 转 型 ) 3 0 8 1 0 . 1 4   R e p l a c e E r r o r C o d e w i t h E x c e p t i o n ( 以 异 常 取 代 错 误 码 ) 3 1 0 1 0 . 1 5   R e p l a c e E x c e p t i o n w i t h T e s t ( 以 测 试 取 代 异 常 ) 3 1 5 第 1 1 章   处 理 概 括 关 系 3 1 9 1 1 . 1   P u l l U p F i e l d ( 字 段 上 移 ) 3 2 0 1 1 . 2   P u l l U p M e t h o d ( 函 数 上 移 ) 3 2 2 1 1 . 3   P u l l U p C o n s t r u c t o r B o d y ( 构 造 函 数 本 体 上 移 ) 3 2 5 1 1 . 4   P u s h D o w n M e t h o d ( 函 数 下 移 ) 3 2 8 1 1 . 5   P u s h D o w n F i e l d ( 字 段 下 移 ) 3 2 9 1 1 . 6   E x t r a c t S u b c l a s s ( 提 炼 子 类 ) 3 3 0 1 1 . 7   E x t r a c t S u p e r c l a s s ( 提 炼 超 类 ) 3 3 6 1 1 . 8   E x t r a c t I n t e r f a c e ( 提 炼 接 口 ) 3 4 1 1 1 . 9   C o l l a p s e H i e r a r c h y ( 折 叠 继 承 体 系 ) 3 4 4 1 1 . 1 0   F o r m T e m P l a t e M e t h o d ( 塑 造 模 板 函 数 ) 3 4 5 1 1 . 1 1   R e p l a c e I n h e r i t a n c e w i t h D e l e g a t i o n ( 以 委 托 取 代 继 承 ) 3 5 2 1 1 . 1 2   R e p l a c e D e l e g a t i o n w i t h I n h e r i t a n c e ( 以 继 承 取 代 委 托 ) 3 5 5 第 1 2 章   大 型 重 构 3 5 9 1 2 . 1   T e a s e A p a r t I n h e r i t a n c e ( 梳 理 并 分 解 继 承 体 系 ) 3 6 2 1 2 . 2   C o n v e r t P r o c e d u r a l D e s i g n t o O b j e c t s ( 将 过 程 化 设 计 转 化 为 对 象 设 计 ) 3 6 8 1 2 . 3   S e p a r a t e D o m a i n f r o m P r e s e n t a t i o n ( 将 领 域 和 表 述 / 显 示 分 离 ) 3 7 0 1 2 . 4   E x t r a c t H i e r a r c h y ( 提 炼 继 承 体 系 ) 3 7 5 第 1 3 章   重 构 , 复 用 与 现 实 3 7 9 1 3 . 1   现 实 的 检 验 3 8 0 1 3 . 2   为 什 么 开 发 者 不 愿 意 重 构 他 们 的 程 序 3 8 1 1 3 . 3   再 论 现 实 的 检 验 3 9 4 1 3 . 4   重 构 的 资 源 和 参 考 资 料 3 9 4 1 3 . 5   从 重 构 联 想 到 软 件 复 用 和 技 术 传 播 3 9 5 1 3 . 6   小 结 3 9 7 1 3 . 7   参 考 文 献 3 9 7 第 1 4 章   重 构 工 具 4 0 1 1 4 . 1   使 用 工 具 进 行 重 构 4 0 1 1 4 . 2   重 构 工 具 的 技 术 标 准 4 0 3 1 4 . 3   重 构 工 具 的 实 用 标 准 4 0 5 1 4 . 4   小 结 4 0 7 第 1 5 章   总 结 4 0 9 参 与 评 论 您 还 未 登 录 , 请 先 登 录 后 发 表 或 查 看 评 论 重 构 _ 重 构 _ 改 善 既 有 代 码 _ 1 0 0 3 重 构 — — 改 善 既 有 代 码 设 计 , 经 典 文 档 , 架 构 师 必 须 教 程 重 构 改 善 既 有 代 码 设 计 0 6 2 0 a n d r o i d , c , c + + , j a v a 代 码 的 重 构 独 特 的 讲 解 , 详 细 的 分 析 , 为 代 码 重 构 提 供 好 的 教 材 重 构 改 善 既 有 代 码 的 设 计 ( 高 清 版 ) p d f 0 9 2 4 重 构 改 善 既 有 代 码 的 设 计 ( 高 清 版 ) p d f 重 构 改 善 既 有 代 码 的 设 计 ( 高 清 版 ) p d f 重 构 改 善 既 有 代 码 的 设 计 ( 高 清 版 ) p d f 重 构 改 善 既 有 代 码 的 设 计 ( 高 清 版 ) p d f P H P 杂 谈 《 重 构 改 善 既 有 代 码 的 设 计 》 之 四 简 化 条 件 表 达 式 1 2 1 9   条 件 逻 辑 有 可 能 十 分 复 杂 , 因 此 本 章 提 供 一 些 重 构 的 手 法 , 专 门 用 来 简 化 它 们 。   全 文 简 述 ( 你 可 直 接 跳 过 下 面 的 内 容 )   核 心 重 构 : D e c o m p o s e C o n d i t i o n a l — — 分 离 ” 转 辙 逻 辑 “ ( s w i t c h i n g l o g i c ) 和 ” 操 作 细 节 “ . . . 蓝 桥 杯 真 题 讲 解 : 网 络 稳 定 性 ( K r u s k a l 重 构 树 + L C A ) 最 新 发 布 T u r i n g _ S h e e p 的 博 客 0 3 2 3 2 6 0 蓝 桥 杯 真 题 讲 解 : 网 络 稳 定 性 ( K r u s k a l 重 构 树 + L C A ) 基 于 “ 云 ” 重 构 “ 百 度 云 盘 ” 小 菜 包 的 博 客 0 3 2 3 1 5 7 这 一 篇 是 和 上 一 篇 连 着 的 哦 , 希 望 对 有 需 要 的 你 们 有 所 帮 助 ! ! ! 场 景 化 感 知 智 能 , 重 构 企 业 数 字 化 综 合 能 力 脑 极 体 0 3 1 9 8 8 8 近 几 年 , 数 字 化 与 行 业 融 合 的 趋 势 已 经 十 分 强 劲 。 中 国 信 息 通 信 研 究 院 发 布 的 《 中 国 数 字 经 济 发 展 研 究 报 告 ( 2 0 2 3 年 ) 》 显 示 , 我 国 数 字 经 济 占 G D P 比 重 相 当 于 第 二 产 业 占 国 民 经 济 的 比 重 , 达 到 4 1 . 5 % 。 千 行 万 业 的 数 字 化 还 在 加 速 推 进 。 而 对 数 据 的 有 效 获 取 和 应 用 , 是 提 升 企 业 数 字 化 综 合 能 力 的 前 提 条 件 , 这 就 要 从 智 能 感 知 的 能 力 构 建 开 始 。 3 月 1 4 日 至 1 5 日 , 以 “ 因 聚 而 生 数 智 有 为 ” 为 主 题 的 “ 华 为 中 国 合 作 伙 伴 大 会 2 0 2 4 ” 在 深 . . . J a v a 学 习 笔 记 2 1 — — 使 用 J D B C 访 问 M y S Q L 数 据 库 2 3 0 3 _ 7 9 2 3 2 6 7 6 的 博 客 0 3 1 9 6 7 8 通 常 不 需 要 开 发 人 员 在 程 序 中 直 接 调 用 r e g i s t e r D r i v e r 方 法 来 注 册 驱 动 程 序 的 实 例 , 因 为 实 现 D r i v e r 接 口 的 驱 动 程 序 类 都 包 含 了 一 个 静 态 代 码 块 , 在 这 个 静 态 代 码 块 中 , 会 调 用 D r i v e r M a n a g e r . r e g i s t e r D r i v e r 方 法 来 注 册 自 身 的 的 一 个 实 例 。 当 使 用 C l a s s 类 的 f o r N a m e 方 法 在 数 据 库 驱 动 程 序 类 的 时 候 , 会 自 动 执 行 该 静 态 代 码 块 , 从 而 注 册 驱 动 程 序 的 一 个 实 例 , 这 样 使 用 D r i v e r M a n a g e r . g e t C o n n e c t i o n 方 法 , 就 返 回 相 应 的 驱 动 程 序 的 数 据 库 连 接 ( C o n n e c t i o n ) 对 象 。 J a v a 学 习 笔 记 : 面 向 对 象 L i _ _ D a x i a 的 博 客 0 3 1 9 9 0 8 J a v a 学 习 笔 记 : 面 向 对 象 J a v a 学 习 笔 记 之 J a v a 基 础 语 法 0 1 变 量 与 常 量 神 马 都 会 亿 点 点 的 毛 毛 张 0 3 2 0 8 6 7 变 量 就 在 程 序 中 临 时 存 储 数 据 的 容 器 。 但 是 这 个 容 器 中 只 能 存 一 个 值 。 变 量 是 程 序 的 基 本 组 成 单 位 。 数 据 类 型 变 量 名 = 数 据 值 ; * * 数 据 类 型 : * * 限 定 了 变 量 当 中 能 存 储 什 么 类 型 的 数 据 。 如 果 要 存 1 0 , 那 么 数 据 类 型 就 需 要 写 整 数 类 型 。 如 果 要 存 1 0 . 0 , 那 么 数 据 类 型 就 需 要 写 小 数 类 型 。 * * 变 量 名 : * * 其 实 就 是 这 个 容 器 的 名 字 , 当 以 后 想 要 使 用 变 量 里 面 的 数 据 时 , 直 接 使 用 变 量 名 就 可 以 了 。 * * 数 据 值 : * * 真 正 存 储 在 容 器 中 的 数 据 。 * * 分 号 : * * 表 示 语 句 的 结 束 , 就 跟 以 前 写 作 文 时 候 的 句 号 是 一 样 的 。 C + + 学 习 笔 记 ( 1 5 ) — — s t r i n g 的 模 拟 实 现 b r o k e n _ e n g i n e r 的 博 客 0 3 2 0 5 8 0 s t r i n g — — 为 效 率 而 生 在 C + + 中 C + + 为 提 高 编 译 者 对 字 符 和 字 符 串 的 管 理 效 率 而 生 。 J a v a 学 习 笔 记 — — 集 合 类 学 习 2 3 0 3 _ 7 9 2 3 2 6 7 6 的 博 客 0 3 2 0 9 3 7 以 C o l l e c t i o n 根 接 口 的 一 众 实 现 保 存 的 是 单 值 数 据 , 而 以 M a p 为 根 接 口 的 一 众 实 现 保 存 的 是 键 值 ( k e y v a l u e ) 对 数 据 。 M a p 类 型 的 集 合 使 用 键 值 对 来 保 存 对 象 , 这 意 味 着 在 保 存 对 象 时 , 需 要 同 时 提 供 两 个 对 象 , 一 个 作 为 键 ( k e y ) , 一 个 作 为 值 ( v a l u e ) 。 L i s t : 一 个 有 序 的 集 合 , 可 以 包 含 重 复 的 元 素 , 提 供 了 按 索 引 访 问 的 方 式 。 【 T D 3 思 路 及 代 码 】 【 自 用 笔 记 】 w e i x i n _ 6 4 8 8 1 8 4 7 的 博 客 0 3 2 0 8 8 6 t d 3 【 学 习 笔 记 】 数 据 结 构 与 算 法 0 7 图 : 邻 接 表 , 邻 接 矩 阵 X c o n g _ Z h u 的 博 客 0 3 2 1 4 7 8 图 由 顶 点 和 边 组 成 , 可 以 表 示 为 一 组 顶 点 和 一 组 边 构 成 的 集 合 。 相 较 于 线 性 关 系 ( 链 表 ) 和 分 治 关 系 ( 树 ) , 网 络 关 系 ( 图 ) 具 有 更 高 的 自 由 度 , 因 而 更 为 复 杂 。 有 向 图 的 边 具 有 方 向 性 , 连 通 图 中 的 任 意 顶 点 均 可 达 , 有 权 图 的 每 条 边 都 包 含 权 重 变 量 。 邻 接 矩 阵 利 用 矩 阵 来 表 示 图 , 每 一 行 ( 列 ) 代 表 一 个 顶 点 , 矩 阵 元 素 代 表 边 , 用 1 或 0 表 示 两 个 顶 点 之 间 有 边 或 无 边 。 邻 接 矩 阵 在 增 删 查 改 操 作 上 效 率 很 高 , 但 空 间 占 用 较 多 。 邻 接 表 使 用 多 个 链 表 来 表 示 图 , 第 i 个 链 表 对 应 顶 点 i , 其 中 存 储 了 该 顶 点 的 所 有 邻 接 顶 点 。 4 4 物 体 检 测 算 法 : R C N N , S S D , Y O L O 【 李 沐 动 手 学 深 度 学 习 v 2 课 程 笔 记 】 q q _ 5 3 8 2 6 6 9 9 的 博 客 0 3 2 0 8 7 2 对 每 个 像 素 生 成 多 个 以 它 为 中 心 的 多 个 锚 框 上 图 中 绿 色 的 点 表 示 S S D 从 图 中 可 以 看 出 , S S D 相 对 于 F a s t e r R C N N 来 讲 速 度 快 很 多 , 但 是 精 度 不 是 太 好 S S D 的 实 现 相 对 来 讲 比 较 简 单 , R C N N 系 列 代 码 的 实 现 非 常 困 难 。 m o s q u i t t o 笔 记 t i a n y u 的 专 栏 L i n u x s i t e : b l o g . c s d n . n e t / w i s h f l y 0 3 2 2 1 7 7 1 m o s q u i t t o 心 跳 和 网 络 重 连 机 制 ( 基 于 M Q T T 协 议 ) m o s q u i t t o 心 跳 和 网 络 重 连 机 制 ( 基 于 M Q T T 协 议 ) _ m q t t 重 连 机 制 C S D N 博 客 2 . m o s q u i t t o 简 单 应 用 h t t p s : / / w w w . c n b l o g s . c o m / e m b e d d e d l i n u x / p / 9 3 8 6 1 6 9 . h t m l P r i m e T i m e 工 具 学 习 笔 记 ( 4 ) 记 录 所 学 , 分 享 知 识 , 结 识 挚 友 0 3 2 1 1 6 8 P r i m e T i m e 工 具 学 习 笔 记 ( 4 ) 重 构 改 善 既 有 代 码 的 设 计 扫 描 版 p d f 0 6 0 6 重 构 指 的 是 通 过 优 化 和 改 善 既 有 代 码 的 设 计 来 提 高 软 件 的 可 维 护 性 、 可 扩 展 性 及 可 重 用 性 。 扫 描 版 p d f 指 的 是 通 过 扫 描 仪 将 纸 质 文 档 转 换 成 电 子 文 件 的 方 式 进 行 存 储 和 传 输 。 将 二 者 结 合 起 来 , 即 是 指 通 过 扫 描 版 p d f 的 方 式 对 既 有 代 码 的 设 计 进 行 修 改 和 优 化 。 首 先 , 扫 描 版 p d f 可 能 存 在 识 别 错 误 或 乱 码 等 问 题 , 因 此 在 进 行 代 码 重 构 时 需 要 特 别 注 意 代 码 的 准 确 性 和 完 整 性 。 其 次 , 根 据 代 码 的 实 际 情 况 , 需 要 采 取 不 同 的 重 构 方 式 , 如 提 炼 函 数 、 合 并 函 数 、 提 取 类 等 , 以 有 效 地 改 善 代 码 质 量 和 结 构 。 重 构 的 目 的 是 为 了 改 善 代 码 的 设 计 , 使 其 更 易 于 理 解 和 维 护 。 通 过 重 构 , 可 以 将 冗 长 、 复 杂 、 重 复 的 代 码 进 行 优 化 , 提 高 代 码 的 可 读 性 和 可 维 护 性 , 减 少 出 错 的 可 能 性 , 同 时 也 可 以 使 代 码 更 加 灵 活 、 可 扩 展 和 可 重 用 。 总 的 来 说 , 采 用 扫 描 版 p d f 的 方 式 对 既 有 代 码 进 行 重 构 是 可 行 的 , 但 需 要 注 意 代 码 的 准 确 性 和 完 整 性 , 并 结 合 实 际 情 况 采 取 不 同 的 重 构 方 式 , 以 达 到 改 善 代 码 设 计 的 目 的 。 “ 相 关 推 荐 ” 对 你 有 帮 助 么 ? 非 常 没 帮 助 没 帮 助 一 般 有 帮 助 非 常 有 帮 助 提 交 寒 生 1 9 8 8 C S D N 认 证 博 客 专 家 C S D N 认 证 企 业 博 客 码 龄 1 2 年 暂 无 认 证 1 1 8 原 创 3 万 + 周 排 名 9 1 0 2 总 排 名 1 0 2 万 + 访 问 等 级 1 万 + 积 分 8 4 粉 丝 2 4 5 获 赞 2 8 评 论 2 8 9 收 藏 私 信 关 注 热 门 文 章 g i t H u b 客 户 端 D e s k t o p 的 安 装 使 用 总 结 基 础 篇 6 2 6 5 5 国 家 统 计 局 2 0 1 9 年 省 市 区 数 据 ( 自 取 ) 2 1 0 5 2 A n d r o i d 小 技 巧 : 动 态 设 置 布 局 属 性 a d d R u l e 1 4 1 3 8 C a l e n d a r V i e w 使 用 详 细 文 档 ( 一 个 很 不 错 的 日 历 控 件 ) 1 2 7 7 1 A n d r o i d 小 技 巧 : W e b V i e w 回 退 1 0 8 3 9 分 类 专 栏 f l u t t e r 1 篇 A n d r o i d 之 应 用 实 战 3 5 篇 A n d r o i d 之 基 础 总 结 2 0 篇 J a v a 之 基 础 总 结 9 篇 J a v a 之 算 法 与 数 据 结 构 3 篇 A n d r o i d 之 设 计 模 式 2 7 篇 A n d r o i d 之 性 能 优 化 8 篇 A n d r o i d 小 技 巧 6 篇 h t m l 5 1 5 篇 项 目 构 建 1 6 篇 心 得 体 会 3 篇 微 信 2 篇 s p r i n g M v c 3 3 篇 l i n u x 5 篇 最 新 评 论 A n d r o i d S t u d i o : 利 用 P r o f i l e r 来 监 控 C P U 、 内 存 和 网 络 m 0 _ 6 7 0 5 2 0 8 4 : 请 教 下 大 佬 , 为 啥 我 的 p r o f i l e r 不 显 示 n e t w o r k 入 口 A n d r o i d : 检 查 通 知 权 限 并 跳 转 到 通 知 设 置 界 面 y y y j m _ : S e t t i n g s . A C T I O N _ A P P _ N O T I F I C A T I O N _ S E T T I N G 不 是 大 于 2 6 才 能 用 吗 C a l e n d a r V i e w 使 用 详 细 文 档 ( 一 个 很 不 错 的 日 历 控 件 ) l l p 5 7 8 3 : 想 要 隐 藏 2 4 节 气 和 农 历 怎 么 办 , 只 显 示 日 期 H y b r i d 混 合 开 发 学 习 笔 记 ( 2 ) 开 发 框 架 D o r a t r e e : 大 佬 你 好 , f u l t t e r 也 是 原 生 编 译 框 架 吗 C a l e n d a r V i e w 使 用 详 细 文 档 ( 一 个 很 不 错 的 日 历 控 件 ) D I A 老 寿 : 十 分 感 谢 最 新 文 章 《 代 码 整 洁 之 道 》 读 书 笔 记 ( 二 ) 《 代 码 整 洁 之 道 》 读 书 笔 记 ( 一 ) D a r t 学 习 笔 记 2 0 2 3 年 3 篇 2 0 2 1 年 8 篇 2 0 2 0 年 7 篇 2 0 1 9 年 3 7 篇 2 0 1 8 年 2 9 篇 2 0 1 7 年 3 篇 2 0 1 6 年 6 2 篇 2 0 1 5 年 3 6 篇 目 录 目 录 分 类 专 栏 f l u t t e r 1 篇 A n d r o i d 之 应 用 实 战 3 5 篇 A n d r o i d 之 基 础 总 结 2 0 篇 J a v a 之 基 础 总 结 9 篇 J a v a 之 算 法 与 数 据 结 构 3 篇 A n d r o i d 之 设 计 模 式 2 7 篇 A n d r o i d 之 性 能 优 化 8 篇 A n d r o i d 小 技 巧 6 篇 h t m l 5 1 5 篇 项 目 构 建 1 6 篇 心 得 体 会 3 篇 微 信 2 篇 s p r i n g M v c 3 3 篇 l i n u x 5 篇 目 录 评 论 被 折 叠 的     条 评 论 为 什 么 被 折 叠 ? 到 【 灌 水 乐 园 】 发 言 查 看 更 多 评 论 添 加 红 包 祝 福 语 请 填 写 红 包 祝 福 语 或 标 题 红 包 数 量 个 红 包 个 数 最 小 为 1 0 个 红 包 总 金 额 元 红 包 金 额 最 低 5 元 余 额 支 付 当 前 余 额 3 . 4 3 元 前 往 充 值 > 需 支 付 : 1 0 . 0 0 元 取 消 确 定 下 一 步 知 道 了 成 就 一 亿 技 术 人 ! 领 取 后 你 会 自 动 成 为 博 主 和 红 包 主 的 粉 丝 规 则 h o p e _ w i s d o m 发 出 的 红 包 实 付 元 使 用 余 额 支 付 点 击 重 新 获 取 扫 码 支 付 钱 包 余 额 0 抵 扣 说 明 : 1 . 余 额 是 钱 包 充 值 的 虚 拟 货 币 , 按 照 1 : 1 的 比 例 进 行 支 付 金 额 的 抵 扣 。 2 . 余 额 无 法 直 接 购 买 下 载 , 可 以 购 买 V I P 、 付 费 专 栏 及 课 程 。 余 额 充 值

站点概括

关于blog.csdn.net说明:
blog.csdn.net由网友主动性提交被beaa缤纷秒收录整理收录的,beaa缤纷秒收录仅提供blog.csdn.net的基础信息并免费向大众网友展示,blog.csdn.net的是IP地址:220.185.184.3 [中国浙江台州 电信],blog.csdn.net的百度权重为9、百度手机权重为9、百度收录为156320000条、360收录为50600000条、搜狗收录为700709209条、谷歌收录为0条、百度来访流量大约在1683143之间、百度手机端来访流量大约在2735728之间、blog.csdn.net的备案号是京ICP备19004658号、备案人叫北京创新乐知网络技术有限公司、被百度收录的关键词有4505726个、手机端关键词有290523个、该站点迄今为止已经创建25年13天。

内容声明:

1、本站收录的内容来源于大数据收集,版权归原网站所有!
2、本站收录的内容若侵害到您的利益,请联系我们进行删除处理!
3、本站不接受违规信息,如您发现违规内容,请联系我们进行清除处理!
4、本文地址:https://m.beaa.cn/links/0838f5ee3c7203c190a6.html,复制请保留版权链接!


温馨小提示:在您的网站做上本站友情链接,访问一次即可自动收录并自动排在本站第一位!
您可能还喜欢

搜狗搜索引擎 - 上网从搜狗开始

搜狗搜索是全球第三代互动式搜索引擎,支持微信公众号和文章搜索、知乎搜索、英文搜索及翻译等,通过自主研发的人工智能算法为用户提供专业、精准、便捷的搜索服务。

文心一言悟智快读插件 - 人工智能阅读解析辅助工具 | 玩转AI插件

文心一言悟智快读插件是基于人工智能技术的阅读解析辅助工具,能自动提取文章关键信息,包括标题、关键字、摘要、大纲,并支持网址、B站、PDF、Docx等格式。提高阅读效率和准确性,让用户更快速、更高效地理解文本内容。

“50亿帝”黄渤宣布明年息影1年 有钱任性休假陪家人_经商宝

50亿帝黄渤宣布明年息影1年有钱任性休假陪家人50亿帝黄渤过去几年如陀螺般不停旋转,一刻不得闲的黄渤累了,投资亿元的谍战大戏

随机文章