毕业六年,专职从事开发三年,如今回想一下当年上学的时光,以为在学习程序开发的道路上走了很多弯路,当时真是缺乏一个指路人。html
如今基本脱离了新手区成为了避免那么新的手,为了避免让后来人重蹈覆辙,推荐一些书籍给你们,这些书都是毕业后看过的(绝大部分是从事开发工做三年来看的)、有意义的好书,附本弱B的简评前端
排名不分前后程序员
1. 《代码整洁之道》(英文名:Clean Code,下同)算法
学会语法后第一本该看的书!设计模式
它会告诉你原先在学校课本上那些int a, bc;/*啊,白痴!*/ int funA();之类的写法是多么的荒谬!数据结构
固然在看的过程当中会有许多不明白的地方,把这些不明白的地方当成你继续前进的路标架构
2. 《重构:改善既有代码的设计》(Refactoring: Improving the Design of Existing Code)app
许多书里都会提到这本书,它会告诉你如何去写易读易懂的代码ide
3. 《程序员修炼之道》(The Pragmatic Programmer)单元测试
坊间给这本书起的别号为:代码小全,以对应那本著名的《代码大全》。不过我既然看太小的了就没再看大的。
整本书描述了程序员的哲学、程序员应具有的技能、程序员应有的工做态度,可就是没详细地告诉你怎么去作到这些。
书中的80多条提示字字真言!书中有许多有趣的类比,破窗户和煮青蛙理论深得人心
4. 《敏捷软件开发:原则、模式与实践》(Agile Software Development: Principles, Patterns, and Practices)
本书文献编号为PPP或PPP02(Java、C++版)、PPP05(C#版),因此我一般亲切的称它为:3P
这是一本名为讲敏捷,实为讲OOD和OOP的、极为面向实际应用的好书。
MarkIV咖啡机那一章的抽象过程使人叹为观止,并且本书还深刻浅出地讲解了最经常使用的设计模式。有人认为3P上讲的设计模式与GoF相比不全,可是3P里讲的的确是最经常使用的,其它未出现的3P中的DP基本都不怎么用。
本书的C#版增长了UML讲解,一样是面向实际应用,把庞大的UML体系中最有可能用到的数种图形单独拿出来说解,未讲到的部分读者根本不用去管它们了
3P这书还有一个神奇的地方:当你水平不够的时候,你会以为这书超级简单;当你水平增加以后,你会以为本书处处是坑,许多一句话带过去的东西蕴含了惊人的智慧。因此,本书绝对不是那种读一次就扔掉的书。
5. 《企业应用架构模式》(Patterns of Enterprise Application Architecture,简称PoEAA)
这本书有些尴尬,由于当你水平和经验足够的时候,PoEAA上讲的东西你全明白,甚至都明白它们应该怎么应用,在哪些场景下应用;但是当你水平不够(或者没遇到实际场景)的时候,你是万万不可能看得懂这本书的。
总之,若是遇到了实际的问题能够稍微参考一下PoEAA吧。
6. 《xUnit Test Pattern》
先说一句:千万不要去买本书的中文版!除非你想打击你对汉语水平掌握程度的信心!
本书教你如何写单元测试,说的粗鄙一点:你TMD就应该照这本书的要求来写单元测试!
若是你正在使用TDD开发,若是你正在写单元测试却遇到了如下的状况:单元测试运行速度慢、单元测试有时能跑过有时跑不过、单元测试不可维护等等问题,来看这本书吧
7. 《深刻理解计算机系统》(Computer Systems: A Programmer's Perspective,简称CSAPP)
若是你是学生、若是你有许多空闲时间、若是你是一名C/C++开发者,请完整的阅读本书!
若是你从事其它方面的开发,请参考老赵的书评
本书讲的不深,可是讲的面却很广,它可让你明白许多计算机系统的基础知识。(比方说IEEE浮点数看似奇怪的Round逻辑的缘由等)
8. 《离散数学及其应用》(Discrete Mathematics and Its Applications)
若是你是学生或者你有许多空闲时间而且你想学习算法,本书是引路者。
这本书不只仅讲的是离散数学,还包括几率论等学习算法的必备知识。
若是你是学生,仅仅是想经过离散数学的考试,那么《离散数学导学》(Discrete Mathematics by Example)更适合你
9. 《算法导论》(Introduction to Algorithms,简称CLRS)
首先我要说:CLRS不难,真的!尤为是在抛开全部数学证实部分以后!(其实要看懂全部的数学证实部分也不难,不过要先多学一些数学方面的知识。本弱B不是学数学的也同样对着公开课视频把本书前1/3的数学部分弄明白了80%)
你彻底能够用这本书来学习数据结构,你也彻底能够用这本书算法研究部分介绍的算法来解决实际问题!若是你的目标是M$、Google等大公司,本书更是必读的课本!
1. 入门:《C#本质论》(Essential C#)
C#入门必读,超级简单超级傻瓜
2. 提升:《深刻理解C#》(C# in Depth)、《CLR via C#》
建议首先阅读《深刻理解C#》,固然,你要写高效率和C#代码,《CLR via C#》也是必读的,就比如你想写高效率的C/C++代码,汇编也是你必学的同样
1. JavaScript高级程序设计(Professional JavaScript for Web Developers)
JavaScript入门必备。若是你不是一名专业的前端开发人员,那么你不须要买犀牛书(JavaScript权威指南,JavaScript: The Definitive Guide)了,犀牛书坑太多了
2. JavaScript语言精粹(JavaScript: The Good Parts)
JSON的发明人Douglas Crockford的书,字里行间透露着“你TMD就该这么用JavaScript”的霸气!
3. 编写可维护的JavaScript(Maintainable JavaScript)
告诉你如何在网页上正确地使用JavaScript操做DOM