Java到Kotlin:代码重构指南
Duncan McGregor, Nat Pryce
杨志桥, 李伟晔, 陈亮, 李传武 译
出版时间:2023年12月
页数:382
“将熟悉的老式Java代码转化为简洁、清晰、富有表现力且易于维护的Kotlin代码,是学习该语言的绝佳方式。我从本书总结的经验中受益匪浅。”
——Venkat Subramaniam博士
获奖作家和Agile Developer公司创始人
“学习本书是将你的技能从Java升级到Kotlin的最快方式。任何专业的Java开发人员都应该阅读它。”
——Dawn Griths和David Griths
Head First Kotlin一书的作者

Java到Kotlin的代码重构不是一蹴而就的。如果你是一名有经验的Java开发人员,并尝试过Kotlin语言,则可能用不了多久就能步入正轨。
你会发现,Kotlin的“做事方式”有所不同——可空性很重要,集合是不同的,类默认是final。Kotlin的功能更强,意味着什么呢?它将如何改变编程方式?那些仍然需要支持的Java代码怎么办?
本书作者在2015年第一次接触将Java重构为Kotlin,此后他们帮助许多团队和个人致力于此。本书介绍如何从Java过渡到Kotlin,主要关注代码,每章都阐述了这种过渡的一个方面,考察了典型Java项目可以改进的方面,比如从Optional到nullable,从Bean到值,以及从开放类到密封类。每章首先解释关键概念,然后展示如何在保持互操作性的前提下,逐步且安全地将生产型Java代码重构为惯用的Kotlin代码,由此产生的代码更简单、更有表现力,也更容易更改。
在本书结束时,你将有信心将Java代码重构为Kotlin代码,从头开始编写Kotlin代码,并随着时间的推移管理一个混合语言代码库。
  1. 前言
  2. 第1章 引言
  3. 1.1 编程语言的“纹理”
  4. 1.2 Java编程风格的主观历史
  5. 1.3 Kotlin的“纹理”
  6. 1.4 重构为Kotlin
  7. 1.5 我们要做什么
  8. 1.6 启程
  9. 第2章 从Java项目到Kotlin项目
  10. 2.1 策略
  11. 2.2 在Java构建中添加对Kotlin的支持
  12. 2.3 继续前进
  13. 第3章 从Java类到Kotlin类
  14. 3.1 一个简单的值类型
  15. 3.2 数据类的局限性
  16. 3.3 继续前进
  17. 第4章 从Optional到nullable
  18. 4.1 表示缺失
  19. 4.2 从Optional重构为nullable
  20. 4.3 重构为惯用的Kotlin代码
  21. 4.4 继续前进
  22. 第5章 从Bean到值
  23. 5.1 Bean
  24. 5.2 值
  25. 5.3 为什么值类型更受欢迎
  26. 5.4 将Bean重构为值
  27. 5.5 继续前进
  28. 第6章 从Java集合到Kotlin集合
  29. 6.1 Java集合
  30. 6.2 Kotlin集合
  31. 6.3 将Java集合重构为Kotlin集合
  32. 6.4 继续前进
  33. 第7章 从action到calculation
  34. 7.1 函数
  35. 7.2 calculation
  36. 7.3 action
  37. 7.4 为什么要关注action和calculation
  38. 7.5 为什么选择calculation
  39. 7.6 将action重构为calculation
  40. 7.7 继续前进
  41. 第8章 从静态方法到顶层函数
  42. 8.1 Java 中的静态方法
  43. 8.2 Kotlin顶层函数、对象和伴生对象
  44. 8.3 将静态方法重构为顶层函数
  45. 8.4 移到顶层
  46. 8.5 Kotlin化
  47. 8.6 继续前进
  48. 第9章 从多表达式函数到单表达式函数
  49. 9.1 第1种方式:内联
  50. 9.2 第2种方式:引入函数
  51. 9.3 第3种方式:使用let块
  52. 9.4 第4种方式:后退一步
  53. 9.5 继续前进
  54. 第10章 从函数到扩展函数
  55. 10.1 函数和方法
  56. 10.2 扩展函数
  57. 10.3 扩展和函数类型
  58. 10.4 扩展属性
  59. 10.5 类型转换
  60. 10.6 可空参数
  61. 10.7 可空接收器
  62. 10.8 泛型
  63. 10.9 作为方法的扩展函数
  64. 10.10 重构为扩展函数
  65. 10.11 继续前进
  66. 第11章 从方法到属性
  67. 11.1 字段、访问器和属性
  68. 11.2 如何选择
  69. 11.3 可变属性
  70. 11.4 重构为属性
  71. 11.5 继续前进
  72. 第12章 从函数到运算符
  73. 12.1 基础类:Money
  74. 12.2 添加用户定义的运算符
  75. 12.3 从现有Kotlin代码中调用运算符
  76. 12.4 现有Java类的运算符
  77. 12.5 表示值的约定
  78. 12.6 继续前进
  79. 第13章 从流到可迭代对象再到序列
  80. 13.1 Java流
  81. 13.2 Kotlin可迭代对象
  82. 13.3 Kotlin序列
  83. 13.4 多重迭代
  84. 13.5 在流、可迭代对象和序列之间进行选择
  85. 13.6 代数变换
  86. 13.7 将流重构为可迭代对象和序列
  87. 13.8 继续前进
  88. 第14章 从可累积对象到转换对象
  89. 14.1 使用累加器进行参数计算
  90. 14.2 重构为基于不可变数据的函数
  91. 14.3 再来一次
  92. 14.4 丰富所发现的抽象
  93. 14.5 继续前进
  94. 第15章 从封装集合到类型别名
  95. 15.1 组合领域集合
  96. 15.2 具有其他属性的集合
  97. 15.3 重构封装集合
  98. 15.4 继续前进
  99. 第16章 从接口到函数
  100. 16.1 面向对象的封装
  101. 16.2 函数式封装
  102. 16.3 Java中的函数类型
  103. 16.4 混合和匹配
  104. 16.5 面向对象和函数式的对比
  105. 16.6 耦合
  106. 16.7 面向对象还是函数式
  107. 16.8 Java的遗留问题
  108. 16.9 可追溯性
  109. 16.10 将接口重构为函数
  110. 16.11 继续前进
  111. 第17章 从Mock到Map
  112. 17.1 用Map替代Mock
  113. 17.2 我们真的摆脱了Mock吗
  114. 17.3 继续前进
  115. 第18章 从开放类到密封类
  116. 18.1 多态性还是密封类
  117. 18.2 将接口转换为密封类
  118. 18.3 继续前进
  119. 第19章 从Throwing到Returning
  120. 19.1 异常前的错误处理
  121. 19.2 异常的错误处理
  122. 19.3 Java和受检异常
  123. 19.4 Kotlin和异常
  124. 19.5 超越异常:函数式错误处理
  125. 19.6 Kotlin中的错误处理
  126. 19.7 将异常重构为错误
  127. 19.8 更多修复
  128. 19.9 层级
  129. 19.10 继续前进
  130. 第20章 从执行I/O操作到传递数据
  131. 20.1 监听测试
  132. 20.2 从I/O到数据
  133. 20.3 高效写入
  134. 20.4 高效读取
  135. 20.5 继续前进
  136. 第21章 从异常到值
  137. 21.1 识别可能出错的地方
  138. 21.2 表示错误
  139. 21.3 I/O错误
  140. 21.4 继续前进
  141. 第22章 从类到函数
  142. 22.1 验收测试
  143. 22.2 单元测试
  144. 22.3 标题
  145. 22.4 不同的字段分隔符
  146. 22.5 序列
  147. 22.6 从文件中读取
  148. 22.7 与Commons CSV比较
  149. 22.8 继续前进
  150. 第23章 继续旅程
  151. 23.1 纹理
  152. 23.2 函数式思维
  153. 23.3 简单设计
  154. 23.4 函数式编程和文本推理
  155. 23.5 重构
  156. 23.6 重构和函数式思维
  157. 参考文献
书名:Java到Kotlin:代码重构指南
译者:杨志桥, 李伟晔, 陈亮, 李传武 译
国内出版社:机械工业出版社
出版时间:2023年12月
页数:382
书号:978-7-111-73703-2
原版书书名:Java to Kotlin: A Refactoring Guidebook
原版书出版商:O'Reilly Media
Duncan McGregor
 
Nat Pryce和Duncan McGregor两人在软件开发领域拥有超过50年的专业经验。他们在各种行业中编写了大量软件。他们还写了很多有关编程的文章,编写过各种软件来帮助他们写与编程相关的文章,组织与编程相关的会议,并在会议上发表演讲。
他们编写的许多软件都是和Java编写的,他们还记得当Java相对于C++来说是一股清流时的感觉。而现在,他们发现相对于Java来说,Kotlin也是一股清流。因此,他们写了一本关于如何使用Kotlin编写软件的书(并编写了一些软件来帮助他们写书)。
 
 
Nat Pryce
 
Nat Pryce和Duncan McGregor两人在软件开发领域拥有超过50年的专业经验。他们在各种行业中编写了大量软件。他们还写了很多有关编程的文章,编写过各种软件来帮助他们写与编程相关的文章,组织与编程相关的会议,并在会议上发表演讲。
他们编写的许多软件都是和Java编写的,他们还记得当Java相对于C++来说是一股清流时的感觉。而现在,他们发现相对于Java来说,Kotlin也是一股清流。因此,他们写了一本关于如何使用Kotlin编写软件的书(并编写了一些软件来帮助他们写书)。
 
 
本书封面上的动物是豹猫,也称为Thierry豹猫(Genetta thierryi)。豹猫是一种类似猫的小型动物,分布于从冈比亚到喀麦隆的森林、稀树草原和灌丛地带。这种动物的速度和敏捷性使其在自然界中很难被观察到,但Hausa豹猫已经在塞拉利昂、加纳和科特迪瓦的雨林以及塞内加尔的大草原和几内亚比绍的林地中被发现。
豹猫通常是浅棕色的,身体上有锈色到黑色的斑点,背部有条纹。其长而棱角分明的脸上,有尖角三角形的耳朵和圆形的眼睛。其尾巴与身体长度相同,带有黑色的环纹。不同的豹猫物种有类似的斑点,体长为13~33in(lin=2.54cm),体重为4~40lb(1b=0.4536kg)。Hausa豹猫的体型和体重都比较小。由于Hausa豹猫很难被研究,我们并不了解其行为或饮食。其他豹猫物种是夜行动物,白天睡在洞穴或树洞里。到了晚上,它们会猎捕小型哺乳动物和爬行动物,或者寻找鸟蛋、水果、昆虫和根茎。
豹猫是稀有的,但由于占据了非洲西部众多的栖息地并且分布范围相对较广,因此被国际自然保护联盟(IUCN)归类为“无忧物种”。然而,豹猫过去曾因其皮毛或作为宠物而被非法交易,并被作为丛林肉食猎取。O'Reilly的许多动物封面上的物种都处于濒危状态,所有这些物种都对世界至关重要。
封面插画由 Karen Montgomery基于Wood的Animate Creation 中的一张黑白版画制作。
购买选项
定价:149.00元
书号:978-7-111-73703-2
出版社:机械工业出版社