设计模式书籍有哪些经典书籍

原标题:12本大神级程序员必读书籍从菜鸟走向牛逼!

很多人问我这个问题,尤其是那些刚开启软件工程生涯的同事和朋友要成为一个更好的开发人员,我应该读哪些書我真的需要读书吗?这是一个很值得探讨的问题而且也是我在成为软件工程师之时问了很多导师的一个问题。但问题是很多人推薦的是不同主题的不同书籍。他们推荐的书在他们看来是伟大的但没有人能告诉我,要想成为一个伟大的工程师我应该阅读什么,哪些是重要的、是必读的书籍

我从我的导师那儿学到了很多东西,并意识到我仍然有很多东西需要学习,还有许多不同的书需要阅读峩决定每个月读一本专业领域(软件工程)的书。随着时间的积累我总结出了我认为想要成为一个顶级开发人员必须阅读的书单。

事先聲明——只是阅读这些书不会让你成为一个伟大的开发者你还需要积累多年的工作经验,并应用这些书中的原则到现实实践中并在现實世界中发展你解决问题的能力。

阅读这些书可以帮助你避免一些常见的陷阱和错误一些开发人员早期经历的陷阱和犯过的错误。我多麼希望在我刚进入软件领域的时候就有人向我推荐这些书啊,并且我现在依然很庆幸自己发现并反复阅读了这些书!也许你已经在大学讀计算机科学或工程课程的时候读到过其中的一些书也许在那个时候,你觉得它们并不重要但是我可以用我亲身经历来说明我使用和應用了许多来自于这些书的原则。

我还要指出的是此书单并不详尽。每年都会有许多伟大的著作问世这些只是对我和我的职业生涯影響最大的书籍。此外这些书和使用什么语言无关,可以应用于任何软件语言好了,让我们开始介绍这些书吧! (这些都是必不可少的我将根据它们对我的影响大小从后往前介绍。)

公众号后台留言"程序员",免获费取《12本最具影响力的程序员必读书籍-电子书》

《Code Complete 2》就是它叻!这就是我认为首屈一指值得阅读的书(请恕我妄言)如果你要成为一个优秀的软件工程师的话。它被广泛认为是最好的实用性编程指南之一Steve McConnell最初的《Code Complete》在过去的10多年时间里,一直在帮助开发人员编写更好的软件现在,这部经典书籍已全面更新修改成了前沿的实踐方法——以及数以百计的新的代码示例——修订了软件结构的艺术和科学。从研究、学术界和日常商业实践中捕获知识体系McConnell将最有效嘚技术和必须知道的原则总结成清晰又务实的指导。无论你的经验水平开发环境,还有项目规模如何这本书都可以启迪和激发你的思栲,帮助你打造最优质的代码

Programmer》这是我最先阅读的编程书籍之一。是我的一个朋友在我就职第一份专业工作的时候推荐给我的我很庆圉他这么做了。尽管这本书写于1999年但是它的概念是我们以一种务实的态度去开发复杂系统的基础。程序员也是工匠他们被训练使用一組特定的工具(编辑器,对象管理版本跟踪器)生成某种可在一定环境中(硬件组件上的操作系统)工作的产品(程序)。和任何其他笁艺一样计算机编程也孕育出了智慧,但其中的大多数智慧是不能从大学或认证课程中学到的大多数程序员只能通过独立的试验,时間一点点的积累才能掌握这些所谓的技巧。在《Pragmatic Programmer》一书中Andrew Hunt和David Thomas编纂了很多他们在分别作为软件设计者和代码编写者的职业生涯中发现的嫃理。

作者的一些实用性建议非常具体而且显然很易于实施。他们建议读者去学习例如一个文本编辑器,然后在各种情况下使用它怹们还建议使用版本跟踪软件——即使是对最小型的项目,学习正则表达式语法和文本操作语言书中还有其他许多也非常有价值的建议。在调试部分作者指出:“如果你看到蹄印的话,应该考虑马这个范围而不是斑马。”也就是说要怀疑一切,然后从最显眼的地方尋找问题还有关于预估时间和费用,以及将集成测试纳入到开发进程的建议《Pragmatic Programmer》让人爱不释手的还有两个原因:它会更清晰地梳理你洎己积累的智慧,它还会给你介绍你还没考虑到的工作方法

Programs》强调通过不同方式来发挥核心作用,以处理计算模型中的时间其独特的方式使得它非常适合于计算机科学课程,以及编程语言和程序设计的入门这本书进一步解释了4个最著名的编程语言范式——命令式编程,面向对象编程基于逻辑编程和应用性编程。

《Introduction to Algorithms》这必须是理解和使用算法(将在软件开发中涉及很多)的最佳书籍有些关于算法的書虽然严谨,但不全面——还有一些虽然涉及面广但却缺乏严谨性。《Introduction to Algorithms》独特地结合了严谨性和全面性这本书涵盖了广泛又深入的算法,使得书中的设计和分析能够面向所有层次的阅读人员每个章节相对独立,可看作是一个学习单元算法用英语和可读的伪代码描述。它使用初级基本的解释并不牺牲覆盖的深度和材料的严谨性。第一版不仅广泛成为了世界各地高校的教材还成为了专业人士的标准參考书。第二版新增了算法概率分析,随机算法线性规划的章节。

Martin分为三个部分。第一部分介绍原则、模式和编写干净代码的实践方法第二部分包括若干个复杂度渐进的研究案例。每个案例研究就是一个清洁代码的练习也是通过解决代码库中的一些问题让代码变嘚健全、高效的练习。第三部分是决定性的一个部分:每个单独的章节在创建案例研究的时候包含了一系列启发式的教学法最后得到了描述我们在编写、阅读和清理代码时的思考方式的知识库。

Fowler写的《Refactoring》主要关于改进现有代码的设计这是一个改变软件系统而不改变代码嘚外部行为,却能提高它内部结构的过程通过重构,你甚至可以将一个糟糕的设计重新制作为一个很好的设计这本书对重构原则进行叻深入探讨,包括在哪里发现重构的机会以及如何建立所需的测试。另外还有一个目录有40多个已经用细节证明的重构这些细节包括何時以及为什么要使用重构,逐步说明如何实现重构并举例说明重构是如何工作的。这本书用Java作为其主要语言而写但其中的思路适用于任何OO语言。

《The Art of Computer Programming》这又是一部经典之作由著名的计算机科学家教授Donald Knuth编著,并得到行业内众多顶尖程序员的一致好评甚至连Bill Gates也对这本书赞譽有加:

“如果你认为你是一个真正优秀的程序员……那么就去读[Knuth的]《The Art of Computer Programming》吧……如果你能读懂整本书,那么请一定要给我发简历”

这本書以基本的编程概念和技术开头,然后聚焦于更具体的信息结构——计算机内的信息表示数据元素之间的结构关系,以及如何有效地处悝这些问题此外还提供了基本的应用程序给仿真模拟,数值方法符号计算,软件和系统设计

Software》这本书清理了创建和开发复杂系统的夶量“魔法”。现在的抽象是如此之多以致于一些低层次的细节反而不为开发人员所知。虽然你可能不会发现自己在实践中时刻使用着這本书——但我相信知道自己正在构建什么以及整个编排的工作原理是什么,总归是一个好主意当你需要打开“黑匣子”,深入软件戓硬件来解决一个讨厌的bug的时候它就能派上用场了。Charles Petzold写的《CODE: The Hidden Language of Computer Hardware and Software》梳理了许多编程概念——从数字系统的十进制八进制,二进制到高级语訁这本书介绍了基于包的通信协议和TCP。许多章节讲解了有关硬件的概念有五个章节涉及到了软件和教导操作系统,浮点运算和图形用戶界面

《Programming Pearls 第二版》这本书和这书单上的其他书籍略有不同。我想说这本书可以帮助一个人“像一个程序员一样思考”《Programming Pearls》是先前发表茬“Communications of the ACM(美国计算机学会通讯)”的15篇专栏的一个纲要。这些专栏涵盖了广泛与编程相关的主题:从需求收集到性能优化重点关注编码技術和算法。

每个专栏被组织为一个章节章节通常以一个实际问题的情景呈现开头。然后提出各种解决方案和相应的经验教训。写作风格清晰明快

《Programming Pearls》不是教授新编程概念的寻常书籍。虽然它包含了优秀有时甚至是相当新奇的想法,但这本书的目的不是教你一些新的東西而是帮助你成为一个更好的问题解决者。

《Design Patterns》如果你打算成为一名架构师或系统的设计人员那么你很有可能会被要求阅读这本书。这是一本被誉为有史以来最伟大的有关于软件开发的书详细讲述了许多不同的设计模式书籍,这么多年来一直在帮助软件工程师避免囷处理行业面临的常见问题遵照这本书的策略可以助你打造更高品质,灵活和可维护的软件传说中的“四人帮”就是这本书,因为它昰由四个著名的作者共同编写的

《The Mythical Man-Month》本书是一本经典之作,但最近被修改和更正了令人惊奇的是这本书仍然与软件产品开发密切相关。如果你从事软件的话这本书是必读的。这本书最有价值的部分我相信,是“plan to throw out”原型章节尽管我们的目标通常是做一个更大,更好更快,不管它是什么的东西但是我们总会构建出一些不得不被废弃,需要重做的东西这种情况我亲身经历过很多很多次。因此关鍵是要plan to throw out(计划抛弃),这样你才能适应接下来的情况如果你梦想第一个产品就ok,那么你就会有抛弃它们的风险因为产品的改进和发展昰不可避免的。计划抛弃也有助于通过设置合理的里程碑来达到进度目标

《Working Effectively with Legacy Code》我之所以喜欢这本书,是因为几乎所有的软件开发人员茬其职业生涯的某个时刻,往往会不得不支持和工作于遗留系统在这本书中,Michael Feathers提供了从开始到结束的策略以便于更有效地工作于未经測试的遗留代码库。本书借鉴了Michael为其著名的Object Mentor专题研讨会创作的材料:Michael用于指导的技术以帮助开发人员,技术管理人员和测试人员掌控遗留系统

公众号后台留言"程序员",免获费取《12本最具影响力的程序员必读书籍-电子书》

↑↑↑↑↑长按可复制到微信添加

为企业信息化负责囚(CIO)提供业内干货,搭建IT人员的职业生涯的交流、互助平台探讨互联网行业领先技术,汇聚优秀人才;扩展职场人脉结识志同道合嘚业界大咖。

}

本文由 - 翻译自 欢迎加入。转载請参见文章末尾的要求

对于Java程序员来说,掌握面向对象的设计理论和一些是必备技能就像我在另一篇博客中 提到的,不学理论就开始編程就类似于学习一种语言而不学习字母表。市面上有很多有关面向对象理论的、设计模式书籍的和最佳实践的但只有很少的书真正徝得我 们阅读。这里涉及两件事情一个是面向对象理论,一个是设计模式书籍前者是基础,后者是在基于基础的最佳实践我们应该先学习面向对象理论,再学习设计模 式来看看这些理论是如何帮助我们解决日常碰到的问题的。我为大家选择了以下的五本书帮助大镓学习面向对象理论和设计模式书籍。这些书从浅到深J2EE的 设计模式书籍和核心Java设计模式书籍有一点点区别,但对Java程序员来说核心的J2EE设計书籍也是学习的一个不错的选择。

有关Java设计模式书籍的最好的五本书

以下是我学习面向对象和设计模式书籍的书籍清单设计模式书籍昰前人在解决某些相似问题时总结出的最佳实践。下面的五本书也适用于其他的面向对象语言如果你知道其他优秀的设计模式书籍的书籍,请推荐给我们

这是我读到的第一本Head First系列的书,也是第一本面向对象的书在此之前,我不知道我也不知道。在最初的几年开发中我往往根据需求来编写代码,然而在更多的改动更多的测试之后,往往引入更多的bug多亏了我的好学精神,我了发现 读了第一节之後,我感到非常的愉悦可以说这本书很基础,但是其实学习基础比学习高级的东西更难这本书真正做到了教会我们基础。它是每一个Java程序 员必读的设计模式书籍书籍包括经验丰富的资深程序员。我也建议学习设计模式书籍就应该从这本书开始它不仅用清晰的方法解釋了概念,还给出了很多图表练习,测 试以及活生生的例子来帮助你思考和吸收我是head first系列书籍的超级粉丝,就是因为和Head First Design Pattern中有很多很棒的例子,任何想要学习面向对象基础的人(譬如接口封装,多态抽象等)都应该读读这本书。其中装饰模式(Decorator design pattern)和观察者模式(Observer design pattern)是非常好嘚两个章节

这是, 它也是很多其他的面向对象设计模式书籍书籍所借鉴的对象如果关于设计模式书籍的必读清单上没有这本书,那便昰不完整的出版了接近20年之后,这本书的主题依然 紧贴面向对象和设计模式书籍理论这本书围绕着设计一个文档编辑器的例子,分别解释了多种设计模式书籍如Creational patterns, Structural and Behavioral patterns。个人浅见这本书是最好的设计模式书籍书籍。对于每个Java程序员来说这本书以及和都是必读书籍。你可鉯从亚马逊上购买这本书有纸质版的,也有多媒体CD

就像多线程和并发一样,设计模式书籍也不容易理解其中最困难的部分就是理解の后应用到真实的例子中去。这就是为什么要多读几本Java的设计模式书籍的 书非常值得这么做。因为对于某些程序员来说某个作者的写莋风格比其他作者更易读。但是Joshua Bloch是个例外他的写作风格被部分程序员都适用。《》这本书是学习面相对象设计模式书籍的另一本书虽嘫它也没有什么新内容,也介绍了面向对象理论UML以及装饰者模式、工厂模式、观察者模式等设计模式书籍。但是它对于很多初学者来说哽通俗易懂这本书里的例子也非常棒。

这是这个主题的又一本书它不仅涵盖了所有的面向对象基础(类,对象继承,多态抽象,封裝)也包括了一些实用但不明显的细节,譬如私有方 法getter和setter方法,不可变对象接口和监视器(monitor)。这本书还有一些更深入的面向对象的知识如创建模式 (Creational patterns), 集合模式(Collection patterns), 题,也可以在实际应用方面有所帮助实用也正是学习设计模式书籍最重要的作用。最后这本书通过为网络主机公司设计软件的实例学习来让我们将设计模式书籍应用在真 实的场景中。简而言之《》可以帮助你全面学习设计模式书籍。

J2EE平台是Java程序語言的最流行的开发方法它主要专注于解决网络和企业的问题,有一套自己的问题和需求核心的J2EE模式描述了一些最 有用的J2EE世界的设计模式书籍,譬如拦截过滤器(Intercepting Filters)前端控制器(Front Controller),MVC模式数据访问对象模式(Data Access Object, DAO J2EE程序员来说,这都是一本必读书籍虽然现代的框架如Spring已经确保你在框架的层次接触到这些J2EE设计模式书籍,譬如Spring MVC确保了MVC的使用它也同时使用了前端控制器(DipatcherServlet)和视图解析器(ViewResolver)。同时Spring 框架还在容器层保证使用依赖紸入和IOC总之,不管你使用Spring MVC, Structs还是其他web框架学习J2EE模式不仅能帮助你理解前人写的代码,也能让你写出更容易维护的代码

除了以上的五本書,你可以看看Joshua Bloch的以及你能知道更多面相对象的理论以及如何应用在Java编程中。是Java程序员必读书籍因为它解释了很多Java库如何设计的原理。


原文链接: 翻译: -
[ 转载请保留原文出处、译者和译文链接]

}

我要回帖

更多关于 设计模式书籍 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信