现在软件方面的书真是多――可是在我看来真正值得“读”的实在是不多,最多也就是值得“翻翻”或者“查查”。但是我确实看过一些书――让我觉得是要一读再读反复回味并且获益匪浅的,这次就来说说我心目中不容错过的几本书吧——纯粹个人喜恶,绝无厚此薄彼之意,欢迎大家纠正、补充!


1、人月神话(The Mythical Man-Month, Frederick P. Brooks)
这本颇具传奇色彩的作品在它20岁生日的时候来到中国――使得它的纪念价值远远超过了使用价值。不过书中的很多观点直到今天仍然是真知灼见,有着历久而常新的光芒――这其实是因为在过去的20年中,虽然技术更新了N代,可是人们开发软件的方式并没有实质的变化,MMM揭示的问题依然存在,所以我们今天仍然必须要去读这部20年前的“软件”巨著!

2、设计模式(Design Patterns: Elements of Reusable Object-Oriented Software, Erich Gamma/Richard Helm/Ralph Johnson/John Vlissides)
这本书的意义在于开创了软件设计领域一种新的经验共享的方法,是OOAD中方法论的一种全新的层次,也许书中描述的23个模式中今天并不是每个都会经常用到 ――但是这种设计理念已经深入人心,其对OOAD领域整体能力的提高所起的左右是无法估量的。这是一本必须一边实践一本时不时拿出来翻翻的书――不过也许其价值早就超出这本书的范畴了吧。。。

3、Refactoring – Improving the Design of Existing Code, Martin Fowler
这是这次推荐的书中唯一目前还没有中译本的,但是这正是我要最大力推荐的一本书。这本书在国外备认为是与Design Pattern、Code Complete等类似的经典中的经典,但是在国内似乎还不是很出名――大概是还没有出官方译本的缘故吧!Refactoring是一种代码调整的技术,如果说Design Pattern是一种静态的模式,Refactoring就是行为的模式――教你怎么样操作来使得代码“smell good”。书中的数十种代码重整技术能够极大的改善代码的重用和扩展性,如果理解透彻,将对重用和扩展性的代码(所谓smell good)有深刻的理解,也将善于调整混乱、无序、难以重用和扩展的代码(所谓smell bad)进行优化。Refectoring是XP的支柱技术之一,正是有了这种技术,XP尝到的即时反应才有实现的可能。(顺便说一句,如果想了解和实践下最常用的refectoring,建议试试IntelliJ IDEA这个Java IDE,JBuilder的refectoring功能实在是太。。。弱了。)

4、程序设计实践(The Practice of Programming, Brian W. Kernighan/Rob Pike)
这本书跟上面的几本都不一样,它不算是“巨著”,也不是大腕儿写的,也没有开创性的思想,但是却是我最喜欢读的书之一。为什么呢?看看它的目录:风格、算法、排错、可移植性、记法。。。我觉得它代表了一种程序员的价值,而这种价值一旦获得,会让人更好的理解软件的过程和管理,更重要的是,这也许是中国程序员们浮躁和急功近利之下最缺乏的东西。另外裘宗雁老师流畅的翻译也是软件技术书籍中十分难得一见的。

好了――四本书介绍完了,这四本书的下载地址迟点附上,如果有特别好学的――可以下回去春节慢慢研读(-_-bbb)。

由于本人一贯做生意价格公道童叟无欺,最后再附送几本东西(活活):

――UML参考大全(The UML Ref Manual, James Rumbaugh/Ivar Jacobson/Grady Booch):三位UML的祖师写的“大全”,如果对于UML的语义有什么问题,查这本书恐怕是解决争端最快最稳妥的办法。
――Software Architecture and the UML, Grady Booch:这不是书,是一个演示,著名的狗屋比喻就是从这里来的。
――Lord of The Rings, J.R.R.Tolkien:托尔金老师魔幻文学的开山之作,宏伟的世界观,深刻的人文理念。。。啊!对不起,最近看魔戒看多了,对不起对不起,当我没说啊。。。