书籍详情
Java到Kotlin:代码重构指南
作者:[英]邓肯·麦格雷戈,[英]纳特·普莱斯
出版社:机械工业出版社
出版时间:2023-11-01
ISBN:9787111737032
定价:¥149.00
购买这本书可以去
内容简介
本书讲述了如何从Java过渡到Kotlin,主要关注代码,每章都阐述了从Java过渡到Kotlin的一个方面,考察了典型Java项目在这个过程中可以改进的方面。比如,从Optional到nullable,从Bean到值,从开放类到密封类。每章首先解释关键概念,然后展示如何在保持互操作性的前提下,逐步且安全地将生产型Java代码重构为惯用的Kotlin代码,由此产生的代码更简单、更有表现力,也更容易修改。在本书结束时,你将有信心将Java代码重构为Kotlin代码,从头开始编写Kotlin代码,并随着时间的推移管理一个混合语言代码库。
作者简介
暂缺《Java到Kotlin:代码重构指南》作者简介
目录
目录
前言1
第1章 引言9
1.1 编程语言的“纹理”9
1.2 Java编程风格的主观历史12
1.3 Kotlin的“纹理”16
1.4 重构为Kotlin18
1.5 我们要做什么20
1.6 启程20
第2章 从Java项目到Kotlin项目21
2.1 策略21
2.2 在Java构建中添加对Kotlin的支持22
2.3 继续前进 26
第3章 从Java类到Kotlin类27
3.1 一个简单的值类型27
3.2 数据类的局限性33
3.3 继续前进38
第4章 从Optional到nullable39
4.1 表示缺失39
4.2 从Optional重构为nullable41
4.3 重构为惯用的Kotlin代码48
4.4 继续前进54
第5章 从Bean到值55
5.1 Bean55
5.2 值56
5.3 为什么值类型更受欢迎56
5.4 将Bean重构为值57
5.5 继续前进64
第6章 从Java集合到Kotlin集合65
6.1 Java集合65
6.2 Kotlin集合68
6.3 将Java集合重构为Kotlin集合71
6.4 继续前进79
第7章 从action到calculation80
7.1 函数80
7.2 calculation81
7.3 action82
7.4 为什么要关注action和calculation83
7.5 为什么选择calculation84
7.6 将action重构为calculation84
7.7 继续前进97
第8章 从静态方法到顶层函数98
8.1 Java 中的静态方法98
8.2 Kotlin顶层函数、对象和伴生对象99
8.3 将静态方法重构为顶层函数100
8.4 移到顶层104
8.5 Kotlin化105
8.6 继续前进107
第9章 从多表达式函数到单表达式函数 108
9.1 第1种方式:内联110
9.2 第2种方式:引入函数111
9.3 第3种方式:使用let块115
9.4 第4种方式:后退一步117
9.5 继续前进120
第10章 从函数到扩展函数121
10.1 函数和方法121
10.2 扩展函数123
10.3 扩展和函数类型124
10.4 扩展属性125
10.5 类型转换125
10.6 可空参数127
10.7 可空接收器128
10.8 泛型130
10.9 作为方法的扩展函数131
10.10 重构为扩展函数131
10.11 继续前进145
第11章 从方法到属性146
11.1 字段、访问器和属性146
11.2 如何选择150
11.3 可变属性151
11.4 重构为属性152
11.5 继续前进156
第12章 从函数到运算符157
12.1 基础类:Money 157
12.2 添加用户定义的运算符159
12.3 从现有Kotlin代码中调用运算符160
12.4 现有Java类的运算符162
12.5 表示值的约定 163
12.6 继续前进166
第13章 从流到可迭代对象再到序列167
13.1 Java流167
13.2 Kotlin可迭代对象169
13.3 Kotlin序列170
13.4 多重迭代171
13.5 在流、可迭代对象和序列之间进行选择174
13.6 代数变换175
13.7 将流重构为可迭代对象和序列178
13.8 继续前进190
第14章 从可累积对象到转换对象191
14.1 使用累加器进行参数计算191
14.2 重构为基于不可变数据的函数195
14.3 再来一次201
14.4 丰富所发现的抽象204
14.5 继续前进206
第15章 从封装集合到类型别名207
15.1 组合领域集合209
15.2 具有其他属性的集合210
15.3 重构封装集合210
15.4 继续前进221
第16章 从接口到函数222
16.1 面向对象的封装223
16.2 函数式封装226
16.3 Java中的函数类型229
16.4 混合和匹配231
16.5 面向对象和函数式的对比235
16.6 耦合238
16.7 面向对象还是函数式239
16.8 Java的遗留问题242
16.9 可追溯性242
16.10 将接口重构为函数243
16.11 继续前进249
第17章 从Mock到Map250
17.1 用Map替代Mock252
17.2 我们真的摆脱了Mock吗257
17.3 继续前进260
第18章 从开放类到密封类261
18.1 多态性还是密封类264
18.2 将接口转换为密封类265
18.3 继续前进272
第19章 从Throwing到Returning273
19.1 异常前的错误处理274
19.2 异常的错误处理276
19.3 Java 和受检异常276
19.4 Kotlin和异常278
19.5 超越异常:函数式错误处理278
19.6 Kotlin 中的错误处理281
19.7 将异常重构为错误282
19.8 更多修复296
19.9 层级302
19.10 继续前进304
第20章 从执行I/O操作到传递数据306
20.1 监听测试306
20.2 从I/O到数据308
20.3 高效写入313
20.4 高效读取316
20.5 继续前进320
第21章 从异常到值321
21.1 识别可能出错的地方321
21.2 表示错误328
21.3 I/O错误334
21.4 继续前进336
第22章 从类到函数337
22.1 验收测试337
22.2 单元测试341
22.3 标题345
22.4 不同的字段分隔符353
22.5 序列359
22.6 从文件中读取364
22.7 与Commons CSV比较369
22.8 继续前进374
第23章 继续旅程375
23.1 纹理375
23.2 函数式思维376
23.3 简单设计377
23.4 函数式编程和文本推理378
23.5 重构378
23.6 重构和函数式思维379
参考文献380
前言1
第1章 引言9
1.1 编程语言的“纹理”9
1.2 Java编程风格的主观历史12
1.3 Kotlin的“纹理”16
1.4 重构为Kotlin18
1.5 我们要做什么20
1.6 启程20
第2章 从Java项目到Kotlin项目21
2.1 策略21
2.2 在Java构建中添加对Kotlin的支持22
2.3 继续前进 26
第3章 从Java类到Kotlin类27
3.1 一个简单的值类型27
3.2 数据类的局限性33
3.3 继续前进38
第4章 从Optional到nullable39
4.1 表示缺失39
4.2 从Optional重构为nullable41
4.3 重构为惯用的Kotlin代码48
4.4 继续前进54
第5章 从Bean到值55
5.1 Bean55
5.2 值56
5.3 为什么值类型更受欢迎56
5.4 将Bean重构为值57
5.5 继续前进64
第6章 从Java集合到Kotlin集合65
6.1 Java集合65
6.2 Kotlin集合68
6.3 将Java集合重构为Kotlin集合71
6.4 继续前进79
第7章 从action到calculation80
7.1 函数80
7.2 calculation81
7.3 action82
7.4 为什么要关注action和calculation83
7.5 为什么选择calculation84
7.6 将action重构为calculation84
7.7 继续前进97
第8章 从静态方法到顶层函数98
8.1 Java 中的静态方法98
8.2 Kotlin顶层函数、对象和伴生对象99
8.3 将静态方法重构为顶层函数100
8.4 移到顶层104
8.5 Kotlin化105
8.6 继续前进107
第9章 从多表达式函数到单表达式函数 108
9.1 第1种方式:内联110
9.2 第2种方式:引入函数111
9.3 第3种方式:使用let块115
9.4 第4种方式:后退一步117
9.5 继续前进120
第10章 从函数到扩展函数121
10.1 函数和方法121
10.2 扩展函数123
10.3 扩展和函数类型124
10.4 扩展属性125
10.5 类型转换125
10.6 可空参数127
10.7 可空接收器128
10.8 泛型130
10.9 作为方法的扩展函数131
10.10 重构为扩展函数131
10.11 继续前进145
第11章 从方法到属性146
11.1 字段、访问器和属性146
11.2 如何选择150
11.3 可变属性151
11.4 重构为属性152
11.5 继续前进156
第12章 从函数到运算符157
12.1 基础类:Money 157
12.2 添加用户定义的运算符159
12.3 从现有Kotlin代码中调用运算符160
12.4 现有Java类的运算符162
12.5 表示值的约定 163
12.6 继续前进166
第13章 从流到可迭代对象再到序列167
13.1 Java流167
13.2 Kotlin可迭代对象169
13.3 Kotlin序列170
13.4 多重迭代171
13.5 在流、可迭代对象和序列之间进行选择174
13.6 代数变换175
13.7 将流重构为可迭代对象和序列178
13.8 继续前进190
第14章 从可累积对象到转换对象191
14.1 使用累加器进行参数计算191
14.2 重构为基于不可变数据的函数195
14.3 再来一次201
14.4 丰富所发现的抽象204
14.5 继续前进206
第15章 从封装集合到类型别名207
15.1 组合领域集合209
15.2 具有其他属性的集合210
15.3 重构封装集合210
15.4 继续前进221
第16章 从接口到函数222
16.1 面向对象的封装223
16.2 函数式封装226
16.3 Java中的函数类型229
16.4 混合和匹配231
16.5 面向对象和函数式的对比235
16.6 耦合238
16.7 面向对象还是函数式239
16.8 Java的遗留问题242
16.9 可追溯性242
16.10 将接口重构为函数243
16.11 继续前进249
第17章 从Mock到Map250
17.1 用Map替代Mock252
17.2 我们真的摆脱了Mock吗257
17.3 继续前进260
第18章 从开放类到密封类261
18.1 多态性还是密封类264
18.2 将接口转换为密封类265
18.3 继续前进272
第19章 从Throwing到Returning273
19.1 异常前的错误处理274
19.2 异常的错误处理276
19.3 Java 和受检异常276
19.4 Kotlin和异常278
19.5 超越异常:函数式错误处理278
19.6 Kotlin 中的错误处理281
19.7 将异常重构为错误282
19.8 更多修复296
19.9 层级302
19.10 继续前进304
第20章 从执行I/O操作到传递数据306
20.1 监听测试306
20.2 从I/O到数据308
20.3 高效写入313
20.4 高效读取316
20.5 继续前进320
第21章 从异常到值321
21.1 识别可能出错的地方321
21.2 表示错误328
21.3 I/O错误334
21.4 继续前进336
第22章 从类到函数337
22.1 验收测试337
22.2 单元测试341
22.3 标题345
22.4 不同的字段分隔符353
22.5 序列359
22.6 从文件中读取364
22.7 与Commons CSV比较369
22.8 继续前进374
第23章 继续旅程375
23.1 纹理375
23.2 函数式思维376
23.3 简单设计377
23.4 函数式编程和文本推理378
23.5 重构378
23.6 重构和函数式思维379
参考文献380
猜您喜欢