你真的会写代码吗
上QQ阅读APP看书,第一时间看更新

在过去30年里,我写了不少编程书,所以习惯了时不时有人联系我寻求写书的建议。我总是要求他们提供一篇样章。在大多数情况下,他们就再没有下文了,我也并不觉得遗憾。很显然,如果一个人连样章也写不出,写一本书更是空谈,也就没有什么好讨论的了。

2018年1月,我收到了一封来自意大利那不勒斯大学的马尔科·法埃拉教授的电子邮件,他之前在美国加州大学圣克鲁兹分校工作时和我见过面。他向我咨询了关于写书的建议,而且已经写完好几章了!我看了之后很喜欢,就回复了一些鼓励和建议。但是最终还是没有下文了。我并没有感到惊讶。我的一个编辑曾经告诉我,在他认识的人中,开始写书的人很多……但写完一本书的人很少。

2019年4月,我又收到了马尔科的一封电子邮件,得知这本书即将由Manning出版社出版。它看起来真的很不错。8月,马尔科请我为它作序,我欣然同意了。

在写关于编程语言的书(比如经典的《Java核心技术》)时,我会把重点放在该语言特有的结构和API上,假设读者已经很好地掌握了数据结构、算法和软件工程原理(如测试、重构和设计模式等)。当然,当过教授的我也知道,大学课程并不总是能用一种实用且易于吸收的方式来很好地教授这些主题。

这本书恰恰满足了这一需求。作为读者,你应该熟悉Java编程的基础知识,而马尔科将告诉你如何编写更高质量的程序。你可能已经在算法设计、API设计、测试和并发等方面有了一定的经验,但马尔科对这些经典的主题做了新的诠释。他通过不同的方式反复实现同一个示例,从而得出了很多惊人的见解。通常,我不喜欢“演进示例”的方法,因为它迫使我按顺序阅读一本书。由于需要知道该示例的演进状态,因此就不能直接跳到最感兴趣的部分了。但马尔科给出的例子(其本质我不想在此透露)设计得非常巧妙。当你第一次看到它的时候,需要掌握几个出人意料、有趣的核心概念。之后,每一章都让此代码在不同的方向上演进。这真是一部杰作。

在主要的几章中,你会找到标题为“来点儿新鲜的”的小节。在此,你能将在该章所学的技巧应用到不同的场景中。我建议你完成这些挑战,还有小测验和章末的练习。

构建高质量的软件向来不是简单的事情,重新审视好的设计原则和技巧总是没错的。在这本书中,你会发现一个全新的视角。希望你能像我一样喜欢这本书。

凯·霍斯特曼

著有《Java核心技术》《写给大忙人看的Java核心技术》
《快学Scala》和其他许多面向初级和专业程序员的书