Stack Overflow 推荐编程书单
1 Working Effectively with Legacy Code
Michael C. Feathers
修改代码是每一位软件开发人员的日常工作。开发人员常常面对的现实是,即便是最训练有素的开发团队也会写出混乱的代码,而且系统的腐化程度也会日积月累。本书是一部里程碑式的著作,针对大型的、无测试的遗留代码基,提供了从头到尾的方案,让你能够更有效地应付它们,将你的遗留代码基改善得具有更高性能、更多功能、更好的可靠性和可控性。
中文版《修改代码的艺术》
2 Design Patterns
Ralph Johnson, Erich Gamma, John Vlissides, Richard Helm
四位顶尖的面向对象领域专家精心选取了具有价值的设计实践,加以分类整理和命名,并用简洁而易于重用的形式表达出来。本书已经成为面向对象技术人员的圣经和词典,书中定义的 23 个模式逐渐成为开发界技术交流所必备的基础知识和语汇。
中文版《设计模式》(翻译不太好)
3 Clean Code
Robert C. Martin
著名软件专家 RoberfC.Marlin 在《代码整洁之道》中为你呈现出了革命性的视野。 Martin 携同 ObjectMetltor 公司的同事,从他们有关整洁代码的敏捷实践中提炼出软件技艺的价值观,以飨读者,让你成为更优秀的程序员
中文版《代码整洁之道》
4 Java concurrency in practice
Brian Goetz, Tim Peierls
深入浅出地介绍了 Java 线程和并发,是一本完美的 Java 并发参考手册。书中从并发性和线程安全性的基本概念出发,介绍了如何使用类库提供的基本并发构建块,用于避免并发危险、构造线程安全的类及验证线程安全的规则。
中文版《 Java 并发编程实战》
5 Domain-driven Design
Eric Evans
全书围绕着设计和开发实践,结合若干真实的项目案例,向读者阐述如何在真实的软件开发中应用领域驱动设计。书中给出了领域驱动设计的系统化方法,并将人们普遍接受的一些实践综合到一起,融入了作者的见解和经验,展现了一些可扩展的设计新实践、已验证过的技术以及便于应对复杂领域的软件项目开发的基本原则。
中文版《领域驱动设计》
6 JavaScript
Douglas Crockford
JavaScript 曾是“世界上最被误解的语言”,因为它担负太多的特性,包括糟糕的交互和失败的设计,但随着 Ajax 的到来, JavaScript “从最受误解的编程语言演变为最流行的语言”,本书描述 JavaScript 的可靠功能,涵盖语法,对象,函数,数组,正则表达式,继承和方法等主题。
中文版《 JavaScript 语言精粹》
7 Patterns of Enterprise Application Architecture
Martin Fowler
作者是当今面向对象软件开发的权威,他在一组专家级合作者的帮助下,将 40 多种经常出现的解决方案转化成模式,最终写成这本能够应用于任何一种企业应用平台的、关于解决方案的、不可或缺的手册。
中文版《企业应用架构模式》
8 Code Complete
Steve McConnell
这是一本百科全书式的软件构建手册,涵盖了软件构建活动的方方面面,尤其强调提高软件质量的种种实践方法。作者特别注重源代码的可读性,详细讨论了类和函数命名、变量命名、数据类型和控制结构、代码布局等编程的最基本要素,也讨论了防御式编程、表驱动法、协同构建、开发者测试、性能优化等有效开发实践。
中文版《代码大全》
9 Refactoring
Martin Fowler, Kent Beck
本书清晰揭示了重构的过程,解释了重构的原理和践方式,并给出了何时以及何地应该开始挖掘代码以求改善。书中给出了 70 多个可行的重构,每个重构都介绍了一种经过验证的代码变换手法的动机和技术。本书提出的重构准则将帮助你一次一小步地修改你的代码,从而减少了开发过程中的风险。
中文版《重构:改善既有代码的设计》
10 Head First Design Patterns
Eric Freeman, Elisabeth Freeman, Kathy Sierra, Bert Bates
本书阐述了优化使用 Java 编程语言的软件开发时的设计模式。该书在提供专业知识的同时,仍然具有相当高的可读性。
中文版《 Head First 设计模式》
11 The C Programming Language
Brian W. Kernighan, Dennis M. Ritchie
全面、系统地讲述了 C 语言的各个特性及程序设计的基本方法,包括基本概念,类型和表达式、控制流、函数与程序结构、指针与数组、结构、输入与输出、 UNIX 系统接口、标准库等内容。
中文版《C程序设计语言》
12 Effective C++
Scott Meyers
非常经典的 C++ 书籍。书中介绍了 55 个准则,每一条准则描述一个编写出更好的 C++ 的方式。作者高超的技术把握力、独特的视角、诙谐轻松的写作风格、独具匠心的内容组织,都受到极大的推崇和仿效。
中文版《 Effective C++ :改善程序与设计的 55 个具体做法》
13 Test-driven Development
Kent Beck
阐述了如何使用开创性的方法来编写干净的代码。 书中提到的示例驱动的教学是 Beck 的循序渐进教学的基础,它将让读者使用TDD来扩展他们的项目。
14 Introduction to Algorithms, 3rd Edition
Thomas H. Cormen
Some books on algorithms are rigorous but incomplete; others cover masses of material but lack rigor. Introduction to Algorithms uniquely combines rigor and comprehensiveness.
The book covers a broad range of algorithms in depth, yet makes their design and analysis accessible to all levels of readers. Each chapter is relatively self-contained and can be used as a unit of study. The algorithms are described in English and in a pseudocode designed to be readable by anyone who has done a little programming. The explanations have been kept elementary without sacrificing depth of coverage or mathematical rigor.
一些关于算法的书是严格但不完整的;其他人覆盖了大量的材料,但缺乏严谨性。算法简介独特地结合了严谨性和全面性。
本书涵盖了广泛的算法,同时使设计和分析能够被不同水平的读者所接受。每章相对独立。这些算法用英文和伪代码进行了描述,适合任何有编程基础的人阅读。文中对概念的解释较为简单,同时不失专业深度和数学严谨性。
15 Mastering Regular Expressions
Jeffrey Friedl
本书是讲解正则表达式的经典之作。主要讲解了正则表达式的特性和流派、匹配原理、优化原则、实用诀窍以及调校措施,并详细介绍了正则表达式在 perl 、 java 、.net 、 php 中的用法。
中文版《精通正则表达式》
16 CLR Via C#
Jeffrey Richter
本书针对 CLR 和 .NET Framework 4.5 进行深入、全面的探讨,并结合实例介绍了如何利用它们进行设计、开发和调试。全书 5 部分共 29 章。第Ⅰ部分介绍 CLR 基础,第Ⅱ部分解释如何设计类型,第Ⅲ部分介绍基本类型,第Ⅳ部分以核心机制为主题,第Ⅴ部分重点介绍线程处理。
中文版《 CLR via C# 》
17 Cocoa Programming for Mac OS X
Aaron Hillegass
作者介绍了两种最常用的 Mac 开发工具: Xcode 和 Instruments 。同时还涵盖了 Swift 语言,基本应用程序架构和 Cocoa 的主要设计模式。全面的展示了如何编写 Mac 程序。
18 Effective STL
Scott Meyers
C++ 的标准模板库( STL )是革命性的技术,但是要想用好 STL 却并不容易。在本书中,畅销书作家 Scott Meyers ( Effective C++ 和 More Effective C++ 的作者)揭示了专家总结的一些关键规则,包括专家们总是采用的做法,以及专家们总是避免的做法。通过这些规则,程序员可以高效地使用 STL 。
中文版《 Effective STL : 50 条有效使用STL的经验》
19 Modern C++ Design
Andrei Alexandrescu
本书介绍了编程技术的融合 - 通用编程,模板元编程,面向对象编程和设计模式。描述了通用编程中使用的 C ++ 技术,并实现了许多工业强度组件。
20 Large-scale C++ Software Design
John Lakos
本书是专为有经验的 C++ 软件的开发者、系统设计师、软件质量保证人员编写的。适合从事大型软件开发工作(如数据库、操作系统、编译程序和框架)的人员阅读。本书将高层设计概念与特定的 C++ 编程细节结合起来,满足下面两个要求:
1、一本面向对象设计的书,尤其侧重于 C++ 编程语言实现方面。
2、一本 c++ 程序设计的书,描述如何使用 C++ 编程语言来开发非常大型的系统。