您好,欢迎来到聚文网。 登录 免费注册
你真的会写代码吗

你真的会写代码吗

  • 字数: 396000
  • 装帧: 平装
  • 出版社: 人民邮电出版社
  • 作者: (意)马尔科·法埃拉
  • 出版日期: 2021-07-01
  • 商品条码: 9787115566348
  • 版次: 1
  • 开本: 16开
  • 页数: 268
  • 出版年份: 2021
定价:¥89.8 销售价:登录后查看价格  ¥{{selectedSku?.salePrice}} 
库存: {{selectedSku?.stock}} 库存充足
{{item.title}}:
{{its.name}}
精选
编辑推荐
1.一条主线串联编程语言、算法与软件工程 2.一个实例,七次重构,助力明辨代码优劣 3.附赠在线代码库,按章节组织免费下载 4.Java开发技巧助力应对多样化开发需求 5.《Java核心技术》《写给大忙人看的Java核心技术》等书作者凯·霍思特曼作序推荐
内容简介
本书的核心思想是通过对各方面的代码质量进行比较,使读者了解经验丰富的开发者拥有的思维模式。为了展示软件开发很好实践,作者对一个水容器示例进行多次重构,讨论了18种实现,分别从7个方面改进代码质量:时间效率、空间效率、监控与可靠性、测试与可靠性、可读性、线程安全、可复用性。在此过程中,作者还探讨了与计算机科学、Java编程以及软件工程相关的专业话题,这些知识都有助于读者写出更好的代码。本书面向初级和中级Java程序员,其他面向对象编程人员也能从中受益。
目录
第一部分准备工作
第1章软件质量和待解决问题2
1.1软件质量2
1.1.1内部质量与外部质量3
1.1.2功能性质量与非功能性质量3
1.2主要的外部软件质量4
1.2.1正确性4
1.2.2稳健性5
1.2.3易用性5
1.2.4效率5
1.3主要的内部软件质量6
1.3.1可读性6
1.3.2可复用性6
1.3.3可测试性6
1.3.4可维护性7
1.4软件质量之间的关系7
1.5特殊的质量9
1.5.1线程安全9
1.5.2简洁性9
1.6演进示例:水容器系统9
1.6.1API10
1.6.2用例11
1.7数据的模型和表示12
1.7.1存储水量13
1.7.2存储连接13
1.8你好,容器(Novice)15
1.8.1字段和构造函数15
1.8.2getAmount和addWater方法17
1.8.3connectTo方法17
1.9小结19
1.10扩展阅读19
第2章Reference的实现20
2.1代码(Reference)21
2.1.1内存布局图22
2.1.2方法25
2.2内存需求26
2.3时间复杂度30
2.4学以致用32
2.5小结33
2.6小测验答案和练习答案34
2.7扩展阅读36
第二部分软件质量
第3章速度的要求:时间效率40
3.1常数时间内完成加水(Speed1)41
3.2常数时间内添加连接(Speed2)43
3.2.1用循环链表来表示容器组43
3.2.2延迟更新46
3.3优选的平衡:并查集算法(Speed3)49
3.3.2连接容器树52
3.3.3最坏情况时间复杂度53
3.3.4摊销时间复杂度55
3.3.5可调整大小数组的摊销分析56
3.4比较各种实现59
3.4.1实验59
3.4.2理论与实践60
3.5来点儿新鲜的61
3.5.1快速插入62
3.5.2快速查询62
3.5.3让三个方法都变快63
3.6真实世界的用例63
3.7学以致用64
3.8小结65
3.9小测验答案和练习答案65
3.10扩展阅读68
第4章宝贵的内存:空间效率70
4.1稍微挤一下(Memory1)70
4.2普通数组(Memory2)75
4.3弃用对象(Memory3)78
4.3.1无对象的API79
4.3.2字段和getAmount方法81
4.3.3用一个工厂方法来创建容器82
4.3.4通过ID连接容器84
4.3.5空间复杂度和时间复杂度87
4.4黑洞(Memory4)87
4.5空间和时间的权衡90
4.6来点儿新鲜的92
4.6.1重复对象少的情况92
4.6.2重复元素多的情况93
4.7真实世界的用例94
4.8学以致用94
4.9小结96
4.10小测验答案和练习答案96
4.11扩展阅读100
第5章有自我意识的代码:通过监控实现可靠性102
5.1契约式设计102
5.1.1前置条件和后置条件102
5.1.2不变式104
5.1.3正确性和稳健性105
5.1.4检查契约106
5.1.5更广泛的情况108
5.2基于契约设计水容器109
5.3检查契约的容器(Contracts)111
5.3.1检查addWater方法的契约114
5.4检查不变式的容器(Invariants)117
5.4.1检查connectTo方法的不变式118
5.4.2检查addWater方法的不变式120
5.5来点儿新鲜的120
5.5.1契约121
5.5.2一个基线版本实现121
5.5.3检查契约122
5.5.4检查不变式123
5.6真实世界的用例124
5.7学以致用125
5.8小结126
5.9小测验答案和练习答案126
5.10扩展阅读131
第6章别对我撒谎:通过测试保证可靠性132
6.1测试的基本概念132
6.1.1测试的覆盖率133
6.1.2测试和契约式设计133
6.1.3JUnit134
6.2测试水容器(UnitTests)136
6.2.1初始化测试136
6.2.2测试addWater138
6.2.3测试connectTo方法143
6.2.4运行测试144
6.2.5衡量代码覆盖率145
6.3可测试性(Testable)146
6.3.1可控性146
6.3.2可观察性147
6.3.3隔离:切断依赖关系148
6.4来点儿新鲜的149
6.4.1提高可测试性150
6.4.2一个测试套件151
6.5真实世界的用例153
6.6学以致用154
6.7小结155
6.8小测验答案和练习答案155
6.9扩展阅读160
第7章让代码说话:可读性161
7.1关于可读性的一些观点161
7.1.1企业编码风格规范162
7.1.2可读性因素163
7.2结构性的可读性特征164
7.2.1控制流语句164
7.2.2表达式和局部变量166
7.3外部可读性特征167
7.3.1注释167
7.3.2命名168
7.3.3空白及缩进169
7.4可读的容器(Readable)169
7.4.1用Javadoc描述类的头部170
7.4.2整理connectTo方法173
7.4.3整理addWater方法177
7.5可读性的终极思考178
7.6来点儿新鲜的179
7.7真实世界的用例181
7.8学以致用181
7.9小结183
7.10小测验答案和练习答案183
7.11扩展阅读186
第8章多个厨师一锅饭:线程安全188
8.1线程安全面临的挑战188
8.1.1并发级别190
8.1.2水容器的并发策略192
8.2处理死锁193
8.2.1原子的锁序列194
8.2.2有序的锁序列195
8.2.3一个隐藏的竞争条件196
8.3线程安全的水容器(ThreadSafe)198
8.3.1同步connectTo方法198
8.3.2同步addWater和getAmount方法199
8.4不可变性(Immutable)201
8.4.1API202
8.4.2实现204
8.5来点儿新鲜的206
8.6真实世界的用例208
8.7学以致用209
8.8小结210
8.9小测验答案和练习答案211
8.10扩展阅读213
第9章请重复利用:可复用性215
9.1确立边界215
9.2通用框架216
9.2.1属性API219
9.2.2可变收集器220
9.2.3将Attribute适配到函数接口224
9.3一个通用容器的实现225
9.4通用的考虑227
9.5复原水容器(Generic)228
9.5.1更新用例228
9.5.2设计具体的属性228
9.5.3定义具体的水容器类230
9.6社交网络的帖子230
9.7来点儿新鲜的231
9.7.1参数函数的接口233
9.7.2一个通信模式235
9.8真实世界的用例237
9.9学以致用238
9.10总结240
9.11小测验答案和练习答案240
9.12扩展阅读245
附录A代码高尔夫:简洁性246
附录B终极水容器类249
列表:每一章中主要的类252

蜀ICP备2024047804号

Copyright 版权所有 © jvwen.com 聚文网