有电书房店铺主页二维码
有电书房
微信扫描二维码,访问我们的微信店铺

整洁代码经典实例

¥133.20
运费: ¥ 5.00-22.00
库存: 300 件
整洁代码经典实例 商品图0
整洁代码经典实例 商品图1
整洁代码经典实例 商品图2
整洁代码经典实例 商品缩略图0 整洁代码经典实例 商品缩略图1 整洁代码经典实例 商品缩略图2

商品详情

书名:整洁代码经典实例
书号:9787519892401
定价:148元
作者:[阿根廷]马克西米利亚诺·孔蒂耶里(Maximiliano Contieri)
出版时间:2024-10-08
出版社:中国电力出版社
页码: 480    字数(千字):622
开本:16开    版次:B1    印次:Y1


品牌介绍

中国电力出版社成立于 1951 年,作为中国成立最早的中央科技出版社之一,曾隶属于水利电力部、能源部、电力工业部、国家电力公司,现为国家电网公司所属的科技出版社,在电气技术专业出版领域享有极高的声誉。该社作为以图书出版为主体,音像、电子出版物、期刊、网络出版共同发展的大型出版企业,以强大的出版资源和高素质的专业队伍,致力于向读者提供包括电力工程、电气工程、建筑工程、电子技术、信息技术、外语、大中专教材、家教等学科门类齐全的权威出版物,也竭力为广大师生提供精品教材,是教育部和北京市教委规划教材的出版基地之一。


编辑推荐

“一本内容丰富、理论深刻,并且包含许多实用例子的书,帮助你编写整洁的代码。强烈推荐给所有追求高质量软件的人。” ——Daniel Moka 软件工匠,Moka IT “Maxi是一位应用科学家,他在软件开发领域的深刻专业知识在这本书中得到了精彩展现。” ——Alex Bunardzic 软件开发者兼讲师


产品特色

本书深切关注创建软件所需的各项实践。本书介绍了真实软件技艺中的各项原则、技术、工具和实践。


作者介绍

Maximiliano Contieri在软件行业工作了25年,同时在布宜诺斯艾利斯大学教授计算机科学。他还在流行的博客平台和会议上发表了关于整洁代码、重构和代码坏味道的文章。他提倡利用软件基础原理构建优雅而健壮的解决方案,倡导声明式和行为式编码风格。


内容介绍

本书通过JavaScript、PHP、Python、Java等多种编程语言的真实示例,提供了经过验证的实践方法,帮助你扩展和维护大型系统。每章涵盖了包括可读性、耦合性、可测试性、安全性和可扩展性在内的基本概念,还有代码坏味道及其相应的解决方案。随着阅读的深入,本书中的重构实例及其解决的问题会变得越来越复杂。你将学习以下内容:理解整洁代码的好处,并学习如何识别改进机会。逐步学习重构技术。理解整洁代码背后的理论。在多种现代编程语言中看到实际的例子。获得代码坏味道的全面列表,了解它们的影响及可能的解决方案。编写简洁直观的代码,注重可读性和学习性。
本书适用于程序员、代码审查者、架构师。


前言

前言 代码随处可见,从网页开发到智能合约、嵌入式系统、区块链、詹姆斯·韦伯的机载软件系统、外科手术机器人等各个领域。软件有效地接管了世界,我们目前正在见证专业人工智能代码生成工具的崛起。这意味着整洁的代码比以往任何时候都更加重要。随着你在日益庞大的专有或开源代码库中持续工作,整洁的代码是保持其新鲜并随时准备进化的方法。 本书的读者对象 本书帮助你识别代码库中的常见问题,强调这些问题的后果,并最终通过易于跟随的经典实例帮助你避免这些问题。这是一本宝贵的资源,可以极大地帮助程序员、代码审查者、架构师和学生改善他们的编程技能和现有系统。 本书的组织结构 本书分为25 章。每章都以一些原则和基础知识开始,展示整洁代码的好处、后果以及在错误应用时的缺点。第1 章讨论了整洁代码的单一指导规则:将真实世界的实体与你的设计进行一一映射。这一规则作为其他所有原则的基础。 在每章中,你会发现几个按主题组织的经典实例,提供工具和建议来改变你的代码。每个经典实例的目的是帮助你在当前情况下做出积极的改变和改进。除了经典实例和示例外,你还将介绍各种软件设计原则、启发法和规则。由于整洁的代码不仅仅是某一种编程语言的属性,因此经典实例中包含了多种编程语言的代码示例。许多重构书籍都依赖于一种语言,作者使用最新趋势的编程语言。但这本书与编程语言无关,大多数实例适用于许多语言(除非有说明)。 即使大部分代码可以直接运行,你也应该将代码视为伪代码。当我需要在可读性和性能之间做出选择时,我总是选择可读性。本书中提供了常见术语的定义,但你也可以在书中的术语表中找到它们的所有内容。 使用本书所需的条件 为了运行代码示例,你需要一个工作环境,比如 O’Reilly 沙盒(https://learning.oreilly.com/interactive)或 Replit(https://replit.com)。我鼓励你将代码示例转换成你喜欢的编程语言。现在你可以利用人工智能代码生成器免费进行翻译。我使用过 GitHub Copilot、OpenAI Codex、Bard、ChatGPT 等工具来帮助我编写本书的代码示例。利用这些工具使我能够在本书中使用超过25 种不同的编程语言,即使我并不是许多编程语言的专家。 以数字格式获取本书 这本整洁代码经典实例提供了免费访问的在线版本,随时可用,并可进行搜索,网址为https://cleancodecookbook.com。 本书中使用的约定 本书使用以下排版约定: 斜体(Italic) 表示新术语、URL、电子邮件地址、文件名和文件扩展名。 等宽字体(Constant width) 用于程序清单,以及段落中引用程序元素,如变量或函数名称、数据库、数据类型、环境变量、语句和关键字。 等宽加粗字体(Constant width bold) 显示用户应该按照字面输入的命令或其他文本。 等宽斜体(Constant width italic) 显示应该用用户提供的值或上下文确定的值替换的文本。 使用代码示例 可从https://github.com/mcsee/clean-code-cookbook 下载补充材料(代码示例、练习等)。 如果你有技术问题或在使用代码示例时遇到问题,请发送电子邮件至errata@oreilly.com.cn。 这本书旨在帮助你完成工作。通常情况下,如果这本书提供了示例代码,你可以在你的程序和文档中使用它。除非你要复制大部分代码,否则无需征得我们的许可。例如,编写一个使用本书多个代码块的程序不需要许可。出售或分发来自O’Reilly 图书的示例代码需要许可。通过引用本书并引用示例代码来回答问题不需要许可。将本书的大量示例代码合并到产品文档中需要许可。 我们感谢但通常不要求署名。署名通常包括标题、作者、出版社和ISBN。例如:“Clean Code Cookbook by Maximiliano Contieri (O’Reilly). Copyright 2023 Maximiliano Contieri”。 如果你认为你使用的代码示例超出了合理使用范围或上述许可的限制,请随时与我们联系,邮箱为permissions@oreilly.com。 O’Reilly 在线学习平台(O’Reilly Online Learning) 近40 年来,O’Reilly Media 致力于提供技术和商业培训、知识和卓越见解,来帮助众多公司取得成功。 公司独有的专家和改革创新者网络通过O’Reilly 书籍、文章以及在线学习平台,分享他们的专业知识和实践经验。O’Reilly 在线学习平台按照您的需要提供实时培训课程、深入学习渠道、交互式编程环境以及来自O’Reilly 和其他200 多家出版商的大量书籍与视频资料。更多信息,请访问网站:https://www.oreilly.com/。 联系我们 任何有关本书的意见或疑问,请按照以下地址联系出版社。 美国: O’Reilly Media, Inc. 1005 Gravenstein Highway North Sebastopol, CA 95472 中国: 北京市西城区西直门南大街2 号成铭大厦C 座807 室(100035) 奥莱利技术咨询(北京)有限公司 我们为本书建立了一个网页,列出勘误表、示例和任何额外信息。你可以在https://oreil.ly/clean-code-cookbook 上访问此页面。 有关我们的图书和课程的新闻和信息,请访问https://oreilly.com。 在LinkedIn 上找到我们:https://linkedin.com/company/oreilly-media。 在Twitter 上关注我们:https://twitter.com/oreillymedia。 在YouTube 上观看我们:https://youtube.com/oreillymedia。 致谢 这本书献给我的妻子Maria Virginia,她一直充满爱心和支持,还有我亲爱的女儿Malena 和Miranda,以及我的父母Juan Carlos 和Alicia。 我深表感谢Maximo Prieto 和Hernan Wilkinson,他们宝贵的见解和知识为本书提出的观点做出了巨大贡献。我也感激我在软件工程公司的同事们分享的想法,以及我在布宜诺斯艾利斯大学的同行老师多年来分享的知识和专业知识。 最后,我要感谢技术审阅者Luben Alexandrov、Daniel Moka 和Carlos E. Ferro,以及我的编辑Sara Hunter,他们的指导和建议极大地改进了这本书。


目录

目录
序 1
前言 3
第1 章 整洁代码 9
11 什么是代码坏味道? 9
12 重构是什么? 10
13 什么是经典实例? 10
14 为什么要写整洁的代码? 11
15 可读性、性能,或者两者兼而有之 11
16 软件类型 11
17 机器生成的代码 12
18 本书中的命名考虑 12
19 设计模式13
110 编程语言范式 13
111 对象与类的比较 13
112 可变性 14
第2 章 建立原则 15
20 引言 15
21 为什么它是一个模型? 16
22 为什么它是抽象的? 16
23 为什么它是可编程的? 16
24 为什么它是部分的? 17
25 为什么它是解释性的? 17
26 为什么它与现实有关? 18
27 推断规则18
28 唯一的软件设计原则 18
第3 章 贫血模型 25
30 引言 25
31 将贫血对象转换为丰富对象 26
32 识别你的对象的本质 28
33 移除对象中的setter 30
34 移除贫血代码生成器 32
35 移除自动属性 34
36 移除DTO 35
37 完善空构造函数 39
38 移除getter 40
39 防止对象随意调用 44
310 移除动态属性 45
第4 章 原始偏执 49
40 引言 49
41 创建小对象 50
42 实例化原始数据 52
43 实例化关联数组 53
44 移除滥用字符串 55
45 实例化时间戳 57
46 实例化子集为对象 58
47 实例化字符串验证 59
48 移除不必要的属性 62
49 创建日期区间 64
第5 章 可变性 67
50 引言 67
51 将变量改为常量 69
52 声明变量为可变变量 70
53 禁止改变本质 72
54 避免可变的常量数组 74
55 移除延迟初始化 76
56 冻结可变常量 78
57 移除副作用 81
58 防止提升82
第6 章 声明式代码 85
60 引言 85
61 缩小重用变量的范围 86
62 移除空行87
63 移除带版本的方法 89
64 移除双重否定 90
65 改变错位的责任 91
66 替换显式迭代 93
67 记录设计决策 94
68 用常量替换魔法数字 95
69 分离“是什么”和“怎么做” 97
610 文档化正则表达式 98
611 重写Yoda 条件 99
612 移除滑稽方法 100
613 避免回调地狱 101
614 生成良好的错误消息 104
615 避免魔法修正 106
第7 章 命名 109
70 引言 109
71 扩展缩写109
72 重命名和拆分Helpers 和Utils 112
73 重命名MyObjects 115
74 重命名结果变量 116
75 重命名以类型命名的变量 118
76 重命名长名称 119
77 重命名抽象名称 120
78 更正拼写错误 122
79 从属性中移除类名 122
710 移除类和接口的首字母 124
711 重命名base/do 函数 125
712 将复数类转换为单数 127
713 从名称中移除“Collection” 128
714 移除类名中的“Impl”前缀/ 后缀 129
715 根据角色重命名参数 130
716 移除冗余的参数名称 131
717 移除名称中的不必要上下文 133
718 避免数据命名 134
第8 章 注释 137
80 引言 137
81 删除被注释的代码 138
82 删除过时的注释 140
83 删除逻辑注释 141
84 删除Getter 注释 143
85 将注释转换为函数名称 144
86 删除方法内的注释 145
87 用测试替换注释 148
第9 章 标准 151
90 引言 151
91 遵循代码规范 151
92 统一缩进方式 154
93 统一命名规范 156
94 用英文编写代码 157
95 统一参数顺序 159
96 修复另外的问题 160
第10 章 复杂性 163
100 引言 163
101 移除重复代码 163
102 移除设置/ 配置和功能切换 166
103 将状态作为属性更改 167
104 移除代码中的特殊设计 170
105 打破多个Promises 172
106 打破长链的协作 173
107 将方法提取到对象中 175
108 关注数组构造函数 177
109 移除幽灵对象 179
第11 章 膨胀者 181
110 引言 181
111 分解过长的方法 181
112 减少过多参数 183
113 减少多余变量 185
114 移除过多的括号 188
115 移除过多的方法 189
116 分解过多的属性 190
117 减少导入列表 192
118 拆分“与”功能 193
119 拆分臃肿的接口 195
第12 章 YAGNI 199
120 引言 199
121 移除死代码 200
122 使用代码代替图表 201
123 重构只有一个子类的类 203
124 移除只使用一次的接口 205
125 移除设计模式的滥用 207
126 替换业务集合 208
第13 章 快速失败 211
130 引言 211
131 变量重新赋值的重构 211
132 强制前提条件 213
133 使用更严格的参数 216
134 移除开关语句中的默认情况 217
135 避免在遍历时修改集合 219
136 重新定义哈希和相等性 220
137 无功能性变化的重构 222
第14 章 条件语句 225
140 引言 225
141 用多态替换偶然的if 语句 226
142 为事件重命名标志变量 234
143 实例化布尔变量 235
144 替换Switch/Case/elseif 语句 237
145 使用集合替换硬编码的if 条件 239
146 将布尔值改为短路条件 241
147 添加隐式else 242
148 重写条件箭头代码 243
149 避免使用短路技巧 245
1410 重写嵌套的箭头代码 247
1411 避免返回布尔值进行条件检查 249
1412 更改布尔值的比较方式 251
1413 从长三元表达式中提取 252
1414 将非多态函数转换为多态函数 254
1415 改变相等比较 256
1416 使硬编码的业务条件具体化 257
1417 移除不必要的布尔值 258
1418 重写嵌套三元条件 259
第15 章 空值 263
150 简介 263
151 创建空对象 263
152 移除可选链路 267
153 将可选属性转换为集合 270
154 使用真实对象作为空对象272
155 不使用空对象表示未知位置 275
第16 章 过早优化 279
160 引言 279
161 避免对象上的标识符 280
162 移除过早的优化 283
163 移除位运算的过早优化 285
164 减少过度泛化 286
165 改变结构优化 287
166 移除锚定船只 289
167 从领域对象中提取缓存 290
168 基于实现的回调事件的移除 293
169 移除构造函数中的查询 294
1610 从析构函数中移除代码 295
第17 章 耦合 299
170 引言 299
171 显式化隐藏假设 299
172 替换单例模式 301
173 打破上帝对象 304
174 打破分歧性变更 307
175 将9999 特殊标志值转换为正常值 309
176 移除散弹代码 311
177 移除可选参数 313
178 防止特性依恋 315
179 移除中间人 317
1710 将默认参数移到末尾 319
1711 避免连锁反应 321
1712 移除业务对象上的意外方法 323
1713 从用户界面中移除业务代码 324
1714 改变类之间的耦合 328
1715 重构数据团 330
1716 打破不恰当的亲密关系 332
1717 转换可互换对象334
第18 章 全局变量 337
180 引言 337
181 实例化全局函数 337
182 实例化静态函数 339
183 用结构化代码替换GoTo 340
184 移除全局类 341
185 改变全局日期创建 344
第19 章 层次结构 347
190 引言 347
191 打破深层继承 347
192 打破悠悠球层次结构 350
193 打破子分类以重用代码 352
194 用行为替换“isa”关系 355
195 移除嵌套类 357
196 重命名孤立类 359
197 使具体类成为最终类 360
198 显式定义类的继承关系 362
199 迁移空类 364
1910 推迟过早的分类366
1911 移除受保护的属性 368
1912 完成空实现 370
第20 章 测试 373
200 引言 373
201 测试私有方法 374
202 为断言添加描述 376
203 将 assertTrue 迁移到特定断言 377
204 用真实对象替换模拟对象 379
205 优化通用断言 382
206 移除不稳定的测试 383
207 更改浮点数断言 385
208 将测试数据改为真实数据386
209 保护违反封装的测试 389
2010 移除不相关的测试信息 391
2011 在每个合并请求中添加覆盖率 393
2012 根据日期重写测试 394
2013 学习一种新的编程语言 396
第21 章 技术债务 399
210 引言 399
211 移除依赖于生产环境的代码 400
212 移除缺陷跟踪器 402
213 移除警告/ 严格模式关闭 403
214 预防和移除 ToDo 和 FixMe 405
第22 章 异常 407
220 引言 407
221 删除空的异常块 407
222 删除不必要的异常 409
223 重写预期情况下的异常 411
224 重写嵌套的try/catch 块 412
225 用异常替换返回代码 414
226 重写异常箭头代码 416
227 隐藏终端用户的低级错误418
228 缩小异常范围 419
第23 章 元编程 423
230 简介 423
231 移除元编程用法 424
232 实例化匿名函数 428
233 移除预处理器 430
234 移除动态方法 431
第24 章 类型 435
240 引言 435
241 移除类型检查 435
242 处理真值 437
243 将浮点数改为小数 441
第25 章 安全性 443
250 引言 443
251 输入过滤 443
252 更改顺序ID 445
253 移除包依赖 447
254 替换恶意正则表达式 449
255 保护对象反序列化 450
术语表 453


有电书房店铺主页二维码
有电书房
扫描二维码,访问我们的微信店铺

整洁代码经典实例

手机启动微信
扫一扫购买

收藏到微信 or 发给朋友

1. 打开微信,扫一扫左侧二维码

2. 点击右上角图标

点击右上角分享图标

3. 发送给朋友、分享到朋友圈、收藏

发送给朋友、分享到朋友圈、收藏

微信支付

支付宝

扫一扫购买

收藏到微信 or 发给朋友

1. 打开微信,扫一扫左侧二维码

2. 点击右上角图标

点击右上角分享图标

3. 发送给朋友、分享到朋友圈、收藏

发送给朋友、分享到朋友圈、收藏