重构:改善既有代码的设计

使用 ANSYS 实现铸造、凝固和熔炼的高级解决方案 凭借其强大的有限元分析 (FEA) 和计算流体动力学 (CFD) 功能,ANSYS 可以准确预测模具内的热和流体流动行为。总之,ANSYS 是铸件凝固和熔化领域的关键工具。其全面的仿真功能、工艺优化功能、材料特性分析和用户友好的界面使其成为旨在创新和改进制造工艺的工程师不可或缺的工具。通过利用 ANSYS,各行各业可以在铸造业务中实现更高的质量、效率和成本效益,从而为先进的制造解决方案铺平道路。ANSYS是一款领先的工程仿真软件,提供强大的功能来建模和优化这些复杂的热过程,从而显著提高生产效率和质量。 阅读详情
第1章 重构,第一个案例 1
1.1 起点 1
1.2 重构的第一步 7
1.3 分解并重组statement() 8
1.4 运用多态取代与价格相关的条件逻辑 34
1.5 结语 52
第2章 重构原则 53
2.1 何谓重构 53
2.2 为何重构 55
2.3 何时重构 57
2.4 怎么对经理说 60
2.5 重构的难题 62
2.6 重构与设计 66
2.7 重构与性能 69
2.8 重构起源何处 71
第3章 代码的坏味道 75
3.1 Duplicated Code(重复代码) 76
3.2 Long Method(过长函数) 76
3.3 Large Class(过大的类) 78
3.4 Long Parameter List(过长参数列) 78
3.5 Divergent Change(发散式变化) 79
3.6 Shotgun Surgery(霰弹式修改) 80
3.7 Feature Envy(依恋情结) 80
3.8 Data Clumps(数据泥团) 81
3.9 Primitive Obsession(基本类型偏执) 81
3.10 Switch Statements(switch惊悚现身) 82
3.11 Parallel InheritanceHierarchies(平行继承体系) 83
3.12 Lazy Class(冗赘类) 83
3.13 Speculative Generality(夸夸其谈未来性) 83
3.14 Temporary Field(令人迷惑的暂时字段) 84
3.15 Message Chains(过度耦合的消息链) 84
3.16 Middle Man(中间人) 85
3.17 Inappropriate Intimacy(狎昵关系) 85
3.18 Alternative Classes with Different Interfaces(异曲同工的类) 85
3.19 Incomplete Library Class(不完美的库类) 86
3.20 Data Class(纯稚的数据类) 86
3.21 Refused Bequest(被拒绝的遗赠) 87
3.22 Comments(过多的注释) 87
第4章 构筑测试体系 89
4.1 自测试代码的价值 89
4.2 JUnit测试框架 91
4.3 添加更多测试 97
第5章 重构列表 103
5.1 重构的记录格式 103
5.2 寻找引用点 105
5.3 这些重构手法有多成熟 106
第6章 重新组织函数 109
6.1 Extract Method(提炼函数) 110
6.2 Inline Method(内联函数) 117
6.3 Inline Temp(内联临时变量) 119
6.4 Replace Temp with Query(以查询取代临时变量) 120
6.5 Introduce Explaining Variable(引入解释性变量) 124
6.6 Split Temporary Variable(分解临时变量) 128
6.7 Remove Assignments to Parameters(移除对参数的赋值) 131
6.8 Replace Method with Method Object(以函数对象取代函数) 135
6.9 Substitute Algorithm(替换算法) 139
第7章 在对象之间搬移特性 141
7.1 Move Method(搬移函数) 142
7.2 Move Field(搬移字段) 146
7.3 Extract Class(提炼类) 149
7.4 Inline Class(将类内联化) 154
7.5 Hide Delegate(隐藏"委托关系") 157
7.6 Remove Middle Man(移除中间人) 160
7.7 Introduce Foreign Method(引入外加函数) 162
7.8 Introduce Local Extension(引入本地扩展) 164
第8章 重新组织数据 169
8.1 Self Encapsulate Field(自封装字段) 171
8.2 Replace Data Value with Object(以对象取代数据值) 175
8.3 Change Value to Reference(将值对象改为引用对象) 179
8.4 Change Reference to Value(将引用对象改为值对象) 183
8.5 Replace Array with Object(以对象取代数组) 186
8.6 Duplicate Observed Data(复制"被监视数据") 189
8.7 Change Unidirectional Association to Bidirectional(将单向关联改为双向关联) 197
8.8 Change Bidirectional Association to Unidirectional(将双向关联改为单向关联) 200
8.9 Replace Magic Number with Symbolic Constant(以字面常量取代魔法数) 204
8.10 Encapsulate Field(封装字段) 206
8.11 Encapsulate Collection(封装集合) 208
8.12 Replace Record with Data Class(以数据类取代记录) 217
8.13 Replace Type Code with Class(以类取代类型码) 218
8.14 Replace Type Code with Subclasses(以子类取代类型码) 223
8.15 Replace Type Code with State/Strategy(以State/Strategy取代类型码) 227
8.16 Replace Subclass with Fields(以字段取代子类) 232
第9章 简化条件表达式 237
9.1 Decompose Conditional(分解条件表达式) 238
9.2 Consolidate Conditional Expression(合并条件表达式) 240
9.3 Consolidate Duplicate Conditional Fragments(合并重复的条件片段) 243
9.4 Remove Control Flag(移除控制标记) 245
9.5 Replace Nested Conditional with Guard Clauses(以卫语句取代嵌套条件表达式) 250
9.6 Replace Conditional with Polymorphism(以多态取代条件表达式) 255
9.7 Introduce Null Object(引入Null对象) 260
9.8 Introduce Assertion(引入断言) 267
第10章 简化函数调用 271
10.1 Rename Method(函数改名) 273
10.2 Add Parameter(添加参数) 275
10.3 Remove Parameter(移除参数) 277
10.4 Separate Query from Modifier(将查询函数和修改函数分离) 279
10.5 Parameterize Method(令函数携带参数) 283
10.6 Replace Parameter with Explicit Methods(以明确函数取代参数) 285
10.7 Preserve Whole Object(保持对象完整) 288
10.8 Replace Parameter with Methods(以函数取代参数) 292
10.9 Introduce Parameter Object(引入参数对象) 295
10.10 Remove Setting Method(移除设值函数) 300
10.11 Hide Method(隐藏函数) 303
10.12 Replace Constructor with Factory Method(以工厂函数取代构造函数) 304
10.13 Encapsulate Downcast(封装向下转型) 308
10.14 Replace Error Code with Exception(以异常取代错误码) 310
10.15 Replace Exception with Test(以测试取代异常) 315
第11章 处理概括关系 319
11.1 Pull Up Field(字段上移) 320
11.2 Pull Up Method(函数上移) 322
11.3 Pull Up Constructor Body(构造函数本体上移) 325
11.4 Push Down Method(函数下移) 328
11.5 Push Down Field(字段下移) 329
11.6 Extract Subclass(提炼子类) 330
11.7 Extract Superclass(提炼超类) 336
11.8 Extract Interface(提炼接口) 341
11.9 Collapse Hierarchy(折叠继承体系) 344
11.10 Form Tem Plate Method(塑造模板函数) 345
11.11 Replace Inheritance with Delegation(以委托取代继承) 352
11.12 Replace Delegation with Inheritance(以继承取代委托) 355
第12章 大型重构 359
12.1 Tease Apart Inheritance(梳理并分解继承体系) 362
12.2 Convert Procedural Design to Objects(将过程化设计转化为对象设计) 368
12.3 Separate Domain from Presentation(将领域和表述/显示分离) 370
12.4 Extract Hierarchy(提炼继承体系) 375
第13章 重构,复用与现实 379
13.1 现实的检验 380
13.2 为什么开发者不愿意重构他们的程序 381
13.3 再论现实的检验 394
13.4 重构的资源和参考资料 394
13.5 从重构联想到软件复用和技术传播 395
13.6 小结 397
13.7 参考文献 397
第14章 重构工具 401
14.1 使用工具进行重构 401
14.2 重构工具的技术标准 403
14.3 重构工具的实用标准 405
14.4 小结 407
第15章 总结 409
参考书目 413
要点列表 417
索引 419
异步FIFO的隐形陷阱:复位信号同步化实战解析 本文深入解析异步FIFO设计中复位信号同步化的隐形陷阱,重点分析赛灵思xpm_fifo_async原语在FPGA应用中的常见问题。通过实战代码和系统集成方案,提供复位同步化的最佳实践,帮助工程师避免跨时钟域通信故障,提升系统可靠性。 阅读详情

相关推荐

Python实战:如何用高德API批量获取POI数据(附完整代码)

本文详细介绍了如何使用Python通过高德API批量获取POI数据,包括API基础准备、核心功能模块设计、高级功能实现及实战应用案例。文章提供了完整代码示例,帮助开发者高效解决商业网点分析、公共设施规划等实际项目中的数据采集需求。

stem5的博客 322

《重构:改善代码的既有设计》读书笔记

本文已同步发表在博客园:http://www.cnblogs.com/davidsheh/p/5239745.html 第1章 重构,第一个案例 代码块俞小,代码的功能就俞容易管理,代码的处理和移动也就俞轻松。(功能也就越单一) 任何不会被修改的变量都可以被当成参数传入新的函数,至于会被修改的变量需要慎重。如果只有一个变量会被修改,可以把它当做返回值。 绝大多数情况下,函数应该放在它所使用的数据的所

Sheh伟伟的博客 5770

告别ArcGIS小红叉:从‘无法验证登录信息’到成功连接在线资源的完整排错记录

本文详细记录了从Windows便签的网络错误到ArcGIS连接问题的完整排错过程。通过分析代理服务器、DNS配置和系统网络设置,解决了ArcGIS无法验证登录信息的问题,提供了实用的网络优化方案和技术排错思路。

weixin_26800111的博客 389

重构-改善既有代码的设计(十三):重构、复用与现实

1、现实的检验 (1)重构的潜在因素:在编写代码时对自己所做的事情没有完整的了解,并且受到生产进度的压力 (2)重构被用于开发框架、抽取可复用组件、使软件架构更清晰、使新功能的增加更容易 (3)重构可以帮助你充分利用以前的投资,减少重复劳动,使程序更简洁有力 (4)重构时,你必须找出待重构的这一部分程序被什么地方引用 2、为什么开发者不愿意重构它们的程序 (1)不知道如何重构 (2)...

东晨雨的博客 374

从零到一:桌面宠物的硬件架构设计与工程实践

本文详细介绍了基于STM32F103C8T6主控平台的桌面宠物机器人硬件架构设计与工程实践。内容涵盖电源管理、舵机控制、PCB布局及系统调试等核心环节,为硬件爱好者提供从零到一的完整开发指南,助力打造稳定可靠的智能桌面伴侣。

alice7model的博客 1112

2.1 amdgpu BO的类型和用途

AMDGPU驱动中,amdgpu_bo_create_user和amdgpu_bo_create_kernel分别用于创建用户空间和内核空间的buffer对象(BO)。用户空间BO支持元数据、tiling flags等属性,由GEM handle管理生命周期;内核BO则用于驱动内部资源如ringbuffer,自动pin并可选CPU映射。二者在返回类型、生命周期管理和使用场景上存在根本差异,前者面向图形渲染/AI等应用,后者服务于驱动内部任务。

图形/计算GPU的驱动与虚拟化技术分享园地 2207

《重构》读书笔记(十三)——第十三章 重构,复用与现实

13.1 现实的检验  13.2 为什么开发者不愿意重构它们的程序? 1. 不知道如何重构。 2. 如果这些利益是长远的,何必现在付出这些努力呢?长远看来,说不定当项目收获这些利益时,你已经不在职位上了。 3. 代码重构是一项额外工作,老板付钱给你,主要是让你编写新功能。 4. 重构可能破坏现有程序。 1. 如何重构?在哪里重构? 1).  一个常见的重构原因,就是调整程序结构以使(

e5Max的专栏 1180

30. 用GPT-4自动生成测试用例的完整流程

利用GPT - 4生成测试用例面临的主要问题包括:如何准确地将软件需求转化为GPT - 4能够理解的输入提示,以确保生成的测试用例覆盖所有关键功能;如何评估生成的测试用例的有效性和充分性;如何处理生成的测试用例中的错误或不合理之处;以及如何将生成的测试用例集成到现有的测试框架中。

AGI×大数据,开启智能时代的认知跃迁;解码AGI,赋能数据驱动的智能革命。 472

读《重构:改善既有代码的设计》的思考

重构不是一个一蹴而就的事,需要长期的实践和经验才能够完成得很好。我们重构强调的是 使代码变得更好,拥有代码洁癖。

简单猿 2662

操作系统 | 知识梳理 | 复习(上)

操作系统复习

知识库搭建ing 3475

PyTorch生成式人工智能——VQ-VAE详解与实现

VQ-VAE (Vector Quantised-Variational AutoEncoder) 的核心思想就是将 VAE 的连续潜变量离散化。它通过学习一个码本 (Codebook) 来实现这一点,码本是一个包含有限个嵌入向量的字典。模型不是直接输出一个连续的潜在向量,而是从码本中找出与编码器输出最接近的嵌入向量来代替它。本节首先详细讲解 VQ-VAE 的技术原理,然后使用 PyTorch 从零开始实现 VQ-VAE 模型。

盼小辉丶的博客 3292

图书推荐4:《重构:改善既有代码的设计》

如果你是一名软件开发人员,那么《重构:改善既有代码的设计》这本书绝对值得你学习和研究。首先,重构是一项非常重要的技能,它可以使得代码更加清晰、易读、可维护和高效。而在实践中,很多开发者往往只关注代码的功能性,而忽略了代码的质量和可维护性,从而导致后期的维护、升级和扩展变得异常困难。

madifu的博客 1037

【系统架构设计师】模拟预测试卷十 - 案例分析(完整结构)

本文为系统架构设计师考试模拟试题及参考答案,包含五个专题:质量属性(必答)、信息系统架构设计、嵌入式系统架构设计、云原生架构设计、面向服务架构设计(SOA)。试题一聚焦非功能需求与质量属性映射,如性能、可修改性、一致性等;其余选答题分别涉及分层架构设计(如嵌入式实时控制)、云原生会话管理、服务化治理(如契约设计、熔断策略)等核心架构场景,涵盖战术应用、权衡分析及解决方案设计。参考答案提供关键要点,例如离线借还的冲突解决、服务编排与共享服务的区分、嵌入式硬实时保护的必要性等,适用于备考实战演练。

数据知道的博客 251

《重构:改善既有代码的设计(第2版)》起始

《重构》不仅是一本书,更是一种软件开发的理念。我是按照我们一个领导、前辈的推荐来读这本书的;它引导我们通过小步骤的方式,不断地调整代码,以适应变化的需求。在这个过程中,书中详细介绍了各种重构技术,从简单的函数提炼到复杂的重构手法,一步步为我们展开了代码改善的大门。《重构:改善既有代码的设计(第2版)》为我们打开了代码优化的大门,通过深入学习和实际应用,我们能够在不断变化的软件开发世界中更加从容地应对挑战。希望通过这次学习,能够在我们的项目中创造出更加清晰、灵活的代码结构,提升整体开发效率。

WayneHu的博客 704

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

重构 :改善既有代码的设计

笔记,回顾

DuGuYiZhao的博客 3876

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

《重构:改善既有代码的设计》——关于代码注释的唠叨

  这几天在看《重构:改善既有代码的设计》英文评注版这本书,以前简单看过这本书,但并不是看的特别深入。经过了一段时间的“磨练”,现在回来重新看这本书,又很多想法。   首先,这本书是一本好书,我感觉是软件工程师必看的一本书,而且如果有大量的编码经验看这本书会收获很大。这本书主要内容是代码重构。   在书中第3章中有这样一段话是用来描述代码注释的:   A good time to use...

weixin_30472035的博客 248

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

《重构:改善既有代码的设计》 重新组织数据  之 3

《重构:改善既有代码的设计》中提到过很多重构方法,关于重新组织数据的方法有8种。本文介绍: 将值对象改为引用对象 change value to reference 名称:将值对象改为引用对象 change value to reference 概要:从一个类衍生出许多彼此相等的实例,希望将它们替换为同一个对象。将这个值对象变成引用对象 动机: 你希望给这个对象加入一些可修改数据,并确保对任...

giantmfc123 224

「重构:改善既有代码的设计」实战篇

正确定义问题,比解决问题重要一百倍。那我们首先来搞清楚什么叫重构?作为(名词),重构是指在不改变软件外在功能的前提下,调整其内部结构的过程。这样的调整旨在提高软件的可理解性和降低修改成本。作为(动词),重构意味着通过一系列细微的步骤,不断地调整软件结构,以保持其设计的整洁和可维护性。重构是一种精练的技艺,它通过小的、计划好的修改来减少引入错误的风险。本质上,重构是对已完成的代码进行设计上的改进。

无休居士的博客 1681

《重构:改善既有代码的设计》 重新组织数据  之 1

《重构:改善既有代码的设计》中提到过很多重构方法,关于重新组织数据的方法有8种。本文介绍: 自封装字段 self encapsulate field 名称:自封装字段 self encapsulate field 概要:为该字段建立取值/设值函数,并且只以这些函数来访问字段 动机: 直接访问一个字段,但与字段之间的耦合关系逐渐变的笨拙。完成自我封装后,可以在子类中根据自己的需要随意覆写取值/...

giantmfc123 701

【读书笔记】重构:改善既有代码的设计(第二版)

《重构:改善既有代码的设计(第二版)》读书笔记

qq_40690815的博客 803

《重构:改善既有代码的设计》读书笔记(持续更新中)

背景(我也不知道这个算不算读书笔记,书本知识点整理和个人理解内容可跳至下面正文): 最近过年加找工作一直没想起来整理学习内容, 时间都很零碎。回想一下, 的确一直以来都是为了完成项目去看知识点。 除了刚开始想转行做IT的时候跟着慕课网的两条前后端路线系统地学习了一下, 但是终究囫囵吞枣。 前几天刚好有被问到《重构》这本书的内容。这两天临时抱佛脚看一下。 有了一定量的代码量积累的现在, 带着些许...

yytoo2的博客 2459

《重构:改善既有代码的设计》 在对象之间搬移特性  之 2

《重构:改善既有代码的设计》中提到过很多重构方法,关于在对象之间搬移特性的方法有9种。本文介绍: 搬移字段 move field 名称: 搬移字段 move field 概要:在目标类新建一个字段,修改源字段的所有用户,令它们改用新字段。 动机:在程序中,有个字段被其所驻类之外的另一个类更多的用到。 做法: 如果字段的访问级别是public,使用encapsulate field将它...

giantmfc123 328

《重构:改善既有代码的设计》 重新组织数据  之 2

《重构:改善既有代码的设计》中提到过很多重构方法,关于重新组织数据的方法有8种。本文介绍: 以对象取代数据值 replace data value with object 名称:以对象取代数据值 replace data value with object 概要:有一个数据项,需要与其他数据和行为一起使用才有意义。将数据项变成对象 动机: 开发初期,以简单的数据线表示简单情况。比如一个字符串...

giantmfc123 297

《重构:改善既有代码的设计》第六章摘要

《重构:改善既有代码的设计》第六章摘要1.提炼函数(Extract Function)说明:把一个方法里的部分代码抽出为一个方法使用条件注意要点做法2.内联函数(Inline Function)说明:是提炼函数的反操作.即把一个方法删除,把其方法内部的代码放在调用该方法的位置.使用场景注意要点做法3.提炼变量(Extract Variable)说明:是把一个表达式的返回值赋值给一个变量使用场景注意要点做法4.内联变量(Inline Variable)说明:提炼变量的逆操作.把被表达式赋值的变量,还原为使用表

baixf的博客 511

【免费下载】 《重构:改善既有代码的设计》第二版 资源下载

《重构:改善既有代码的设计》第二版 资源下载 【下载地址】重构改善既有代码的设计第二版资源下载分享 本仓库提供Martin大叔的经典著作《重构:改善既有代码的设计》第二版的资源文件下载。该版本全面更新,以反映编程领域的关键变化。书中包含更新的重构目录,并提供了JavaScript代码示例以及新的函数式示例,展示了在没有类...

gitblog_06619的博客 491

《重构:改善既有代码的设计》 重新组织数据  之 10

《重构:改善既有代码的设计》中提到过很多重构方法,关于重新组织数据的方法有16种。本文介绍: 封装字段 encapsulate field 名称:封装字段 encapsulate field 概要:类中存在一个public字段,将它声明为private,并提供相应的访问函数 动机:数据隐藏 做法: 为public字段提供取值/设值函数 找到这个类以外使用该字段的所有地点。如果客户只是读...

giantmfc123 335
上一篇: 重构与模式
下一篇: 设计模式
kobejayandy
博客等级 码龄18年 2853粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值