几乎每个软件开发人员在其职业生涯的某个阶段都必须支持并使用遗留系统。在本书中,Michael Feathers提供了非常全面的大型未经测试的遗留代码库,从而更有效地工作。本书借鉴Michael为其著名的Object Mentor研讨会创建的材料:Michael在指导中使用的技术,以帮助数百名开发人员、技术经理和测试人员控制他们的遗留系统。
11. The Mythical Man-Month(《人月神话》)
这本书非常经典,最近进行了修订和更正。令人惊奇的是这本书与软件产品开发有很大的相关性。如果你从事软件,那么这本书是必读的。
本书最有价值的部分是“有计划地进行减法”原型章节。虽然目标始终是做出更大、更好、更快的事情,但是你肯定会构建一些必须被丢弃和重新制作的东西。因此,有计划地进行减法是至关重要的,这样你就可以将用户迁移到随后的内容中。如果你梦想的第一个产品是独一无二的,你就要冒着不停地发展这个产品的风险。通过设定可以获得的合理目标,有计划地进行减法也有助于实现计划目标。
10. Design Patterns(《设计模式》)
如果你计划成为系统架构师或设计师,你需要阅读本书。这本书被誉为有史以来最伟大的软件开发书之一,详细介绍了多年来开发的许多不同设计模式,以帮助软件工程师避免和处理行业面临的常见问题。遵循本书中的策略将使你构建更高质量、灵活且可维护的软件。由于这本书汇聚了四位知名作者,因此本书在软件组中也被称为“四人帮”。
9. Programming Pearls (2nd Edition)(《编程珠玑》)
这本书与名单上的其他书略有不同。这本书可以帮助一个人“像程序员一样思考”。编程Pearls是以前在ACM通讯中发表的15个专栏的汇编。这些专栏涵盖了与编程相关的广泛主题:从需求收集到性能调优。重点主要是编码技术和算法。
每一栏都已重新组织为一章。章节通常从提出实际问题开始,然后呈现各种解决方案并将其用作要学习的课程。写作风格清晰而有趣。
编程珠玑不是一本教授新编程概念的书。虽然它包含好的,有时甚至是相当新颖的想法,但本书的目的不是教新的东西,而是帮助你成为一个更好的问题解决者。
8. CODE: The Hidden Language of Computer Hardware and Software(《代码:计算机软硬件的隐藏语言》)
这本书澄清了很多创造和开发复杂系统的“魔咒”。如今有很多抽象的事情,开发人员有时不知道其中低级的细节。虽然你可能没有发现自己在实践中一直都在使用这本书......但去了解你所构建的内容以及整个编排是如何工作的是非常有利的。当你需要打开“黑匣子”并深入了解软件或硬件以修复棘手的错误时,它可能会派上用场。
这本书由Charles Petzold负责处理从数字系统开始的一些编程概念——例如,十进制、八进制、二进制到高级语言。该书解释了基于分组的通信协议和TCP。 许多章节都是关于硬件概念的,有五章专门介绍软件,并讲授操作系统、浮点算法和GUI。
7.The Art of Computer Programming(《计算机编程艺术》)
这本书也非常经典。这本书是由著名的计算机科学家Donald Knuth教授撰写的,并得到了业内许多顶级程序员的高度赞扬。引用比尔盖茨的话说:“如果你认为你是一个非常优秀的程序员...一定要阅读[Knuth的]《计算机程序设计的艺术》......如果你能阅读整篇文章,一定要寄给我一份简历。”
本书从基本的编程概念和技术开始,然后更侧重于信息结构——计算机内部信息的表示,数据元素之间的结构关系以及如何有效地处理它们。基本应用于仿真、数值方法、符号计算、软件和系统设计。
6. Refactoring(《重构》)
Martin Fowler所著的《重构》是关于改进现有代码的设计。这是一个改变软件系统的过程,它不会改变代码的外部行为,但会改进其内部结构。通过这本书,你甚至可以采用一个糟糕的设计并将其重新设计为一个好的设计。
本书详细讨论了重构的原理,包括在哪里发现重构的机会,以及如何设置所需的测试。还有一个包含40多个经过验证的重构目录,其中详细说明了何时、为何使用重构、如何将它逐步实现,以及说明其工作原理的示例。本书是以Java为主要语言编写的,但是这些适用于任何语言。
5. Clean Code(《代码整洁之道》)
罗伯特·C·马丁写的《清洁代码》一书分为三部分。第一部分描述了编写干净代码的原则,模式和实践。第二部分包括几个复杂的案例研究。每个案例研究都是一个清理代码的练习——将具有一些问题的代码库转换为健全有效的代码库。第三部分是收益:包含在创建案例研究时收集的启发式和“气味”列表。结果是一个知识库?,描述了我们在编写、读取和清理代码时的思考方式。
4. Introduction to Algorithms(《算法导论》)
这本书是理解和使用算法的最佳书籍(你将在软件开发中应用到的许多算法)。有些关于算法的书很严谨但不完整;其他其涵盖大量的材料,但缺乏严谨性。算法简介独特地结合了严谨性和全面性。
本书深入介绍了各种算法,并使各类读者都可以使用它们的设计和分析。每章都是相对独立的,可以作为学习单元使用。这些算法用英语和伪代码描述,任何做过一点编程的人都可读。这些解释在不牺牲覆盖深度或数学严谨性的情况下保持可读性。第一版成为全球大学中广泛使用的文本以及专业人员的标准参考。第二版以新章节为重点,介绍了了算法、概率分析、随机算法和线性规划。
3. Structure and Interpretation of Computer Programs(《计算机程序的构造和解释》)
通过分析和严谨的解决问题和编程技术的方法,本书主要面向工程方面。计算机程序的结构和解释强调了计算模型中处理时间的不同方法所起的核心作用。其独特的方法适用于计算机科学课程的介绍,以及编程语言和程序设计。本书进一步解释了四种最着名的编程语言范式——命令式、面向对象、基于逻辑和应用程序编程。
2. Pragmatic Programmer(《程序员修炼之道》)
虽然这本书写于1999年,但这些概念是关于如何以实际方式开发复杂系统的基础。程序员是受过训练的工匠,他们使用某些工具(编辑器、对象管理器、版本跟踪器)来生成某种类型的产品(程序),这些产品将在某些环境中运行(硬件组件上的操作系统)。与任何其他工艺一样,计算机编程产生了许多智慧,其中大部分都没有在大学或认证课程中教授。大多数程序员通过独立实验,随着时间的推移到达所谓的交易技巧。在这本书中包含了安德鲁·亨特和大卫·托马斯,分别是软件设计者和代码编写者,在各自职业生涯中发现的许多真理。
作者一些所介绍的实用主义内容是具体的,实施的方法是明确的。例如,他们建议读者学习文本编辑器,并将其用于所有内容。他们还建议对最小的项目使用版本跟踪软件,并提升学习正则表达式语法和文本操作语言的优点。书中的其他(也许更有价值的)建议更加轻松。在调试部分,值得注意的是“如果你看到蹄印就会想马,而不是斑马。”也就是说,怀疑一切,但是在最突出的地方开始寻找问题。建议估算时间和费用,以及将测试集成到开发过程中。你需要读这两本书有两个原因:书中的总结更加明确;书中会介绍你可能还没有考虑过的工作方法。
1. Code Complete 2(《代码大全(第二版)》)
如果你想成为一名优秀的软件工程师,请阅读第一本书。这本书被广泛认为是最好的编程实用指南之一,Steve McConnell最初所编写《代码大全》在十多年里帮助开发人员编写了更好的软件。现在,这本经典书籍已经通过前沿实践和数百个新的代码示例进行了全面更新和修订,展示了软件构建的艺术和科学。通过从研究、学术界和日常商业实践中获取的知识,McConnell将最有效的技术和必须知道的原则综合到清晰,实用的指导中。无论你的经验水平、开发环境或项目规模如何,本书都将为你提供信息并激发思考,并帮助你构建最高质量的代码。
可以一直帮助你的技术和策略:
· 设计最小的复杂性和最大的创造力
· 获得协作开发的好处
· 应用防御性编程技术来减少和清除错误
· 利用重构代码或进化代码的机会,并安全地执行
· 使用适合项目的实践方法
· 快速有效地调试问题
· 及早正确地解决关键施工问题
· 在项目的每一个时期都要保证质量
返回搜狐,查看