前言
我本人起的书名是《Java:风格练习》。不过在Manning出版社的智者们教导我如何吸引读者之后,这个书名和它的文学范儿就仅存于此前言中了。的确,在经典的现代文学著作《风格练习》中,法国作家Raymond Queneau用99种方式写出了同一个故事。那本书的重点不在于故事本身(刻意弱化了故事),而在于异想天开地探索自然语言几乎无穷无尽的表达能力。
编程当然不是文学,尽管像高德纳这样的名人曾努力拉近两者的距离。如果初学编程的人认为每个编程任务都有最优解,就像简单的数学问题有单一解一样,还是可以理解的。实际上,现代编程更像文学,而不是更像数学。程序设计语言在发展过程中包含了越来越多的抽象结构,使得实现某一目标的方法成倍增加。一门语言即使在出现之后,也会不断演进,这往往是通过不断引入新的问题解决方法来达成的。如Java之类的流行语言一直在加速发展,以跟上试图取代其位置的新一代语言。
本书尝试介绍在执行任何编程任务中都应考虑或至少要意识到的各种问题和解决方案。我提出的任务相当普通:用一个类表示水容器,你可以用管道与之连接并注入水;而客户端不断地与容器交互,随时都可以加水、放水或放置新的管道。针对此任务,我提出并讨论了18种实现。每一种实现都力求最大限度地实现不同的目标,无论是性能、代码清晰度,还是其他软件质量。本书并不是一串串干巴巴的代码片段。每当上下文需要的时候,我都会借机讨论一些与计算机科学(各种数据结构、复杂度理论和摊销复杂度)、Java编程(线程同步和Java内存模型)以及软件工程(契约式设计方法论和测试技术)相关的专业话题。我的目的是告诉你:无论案例多简单,只要进行深入分析,就会串起一个庞大的知识网络,而所有这些知识都有助于写出更好的代码。
扩展阅读
本书的目的之一是激发你对软件开发的各个相关学科的好奇心。这就是为什么每一章的结尾都有“扩展阅读”一节,我在其中简要介绍了我能找到的关于该章主题的最佳资源。我想,前言应该也不例外。
Raymond Queneau的《风格练习》
最原始的“风格练习”书。(原著是用法语在1947年写成的。)
Cristina Videira Lopes的《编程风格:好代码的逻辑》1
作者使用Python语言,用33种不同的风格解决了一个简单的编程任务。每种风格不是为了优化各种代码质量,而是为了遵守特定的约束。此外,它还讲到了许多编程语言的历史。
Matt Madden的99 Ways to Tell a Story: Exercises in Style
当你写代码累了想休息的时候,可以看看这本漫画书,里面有一个用99种不同的风格绘制的简单故事。
1该书已由人民邮电出版社出版,详见图灵社区。——编者注