2020-04-26 13:58:55来源:尚训网综合
若想成为一名优秀的软件工程师,在努力写代码的同时,“读代码”同样至关重要。
在当代社会,人们的日常生活因各种各样的新奇玩意儿而变得丰富多彩,比如播客、视频以及博客等等。尽管如此,仍然有许多人会选择捧读一本好书。笔者作为一名资深“书虫”,也已经涉猎过许多技术类书籍,例如软件工程。至今,笔者仍然在试图通过阅读以求新知。
软件工程领域的发展日新月异,今天的热门可能不久后就沦为明日黄花,因此要在该领域寻得一本好书,实为不易。尤其是如果要找一本与某一特定编程语言相关的书目,则更为艰难。
然而,在该领域也有一些书籍历久弥新,比如那些探讨元主题、设计模式或者一般思维模式的软件工程类书籍。
在下文笔者列出的书单中,就包括目前最热门、最畅销的软件工程类书籍。下文所推荐的书目非常经典,至今依旧光彩熠熠,并且颇受高级软件工程师们的推崇,因此常将其推荐给初级开发人员。在当今这个时代,时间的确很宝贵,尤其是对软件工程师而言。但是,如果真的能花上些许时间拜读一下这些书目,则无论对于自身的提高还是未来的职业生涯而言,必将有所裨益。在这里有必要说明一下,下文书目的排列顺序完全随机,与其重要性的大小无关,因为每本书均有其侧重且值得被推荐。
《代码大全(第二版)》(Code Complete)
《代码大全(第二版):软件构建之实践指南》(Code Complete: a Practical Handbook of Software Construction, 2ndEdition)出自著名IT畅销书作者史蒂夫·迈克康奈尔(SteveMcConnell)之手,完全称得上是“有生之年”系列图书之一,因为几乎每一个程序员都曾拜读过此书。
此书对软件构建进行了全面分析,逻辑严密,因此在业界颇受好评。在本书中,涉及的话题主要涵盖软件设计、编码、调试以及测试等。
因此,对于有着一至三年专业编程经验的工程师而言,这本书尤其值得阅读,因为他们会受益良多。但是笔者认为,即使是软件编程的初学者也不妨试读一下,因为他们可以从这本书中获得更多的自信,以面对未来的软件编程工作。
指点迷津:软件开发人员必须要有能力处理复杂事物,编写易于维护的代码,并且手不释卷——这不仅仅是为了自己,也是为了他人。
《程序员面试金典》(Cracking the Coding Interview)
无论参加编程面试是出于个人兴趣还是职业需求,《程序员面试金典:189道知名科技公司编程面试真题及解答》(Cracking the Coding Interview: 189 Programming Questions &Solution)都是一本非常值得推荐的编程类书籍。本书作者盖尔·拉克曼·麦克道尔(GayleLaakmann McDowell)是一位经验丰富的软件工程师,不仅亲身参与过编程面试,而且还曾担任过面试官。在这本书中,她帮助面试者寻找问题背后的细枝末节,并将问题进行拆分,从而更好地理解各个概念。
此外,作者还在书中讲解了189道知名企业的编程面试真题及答案,为即将参加编程面试的人们助力。
《代码整洁之道》(Clean Code)
“Bob大叔”罗伯特·马丁(RobertC. Martin)的著作《代码整洁之道:整洁代码的敏捷实践方法》(Clean Code: A Handbook of Agile Software Craftsmanship),是全世界最受追捧的编程书目之一。作者希望通过此书来教授软件工程师如何编写整洁的代码。在此书中,作者通过许多实例讲解来告诉人们如何重构现有代码,从而使其更加易于阅读与维护。但值得注意的是,本书主要针对的是Java编程语言。虽然本书所涉及的某些模式与方法也同样适用于一般编程或其它编程语言,但其主要受众仍然是Java程序员。
另外同样值得注意的一点是,由于此书著于2009年,且受限于现有的工具与IDE,因此书中某些内容已经过时,例如代码格式部分。但总体来说,这本书仍然值得拜读。
《重构(第二版)》(Refactoring)
《重构(第二版):改善既有代码的设计》(Refactoring: Improving the Design of Existing Code, 2nd Edition)的作者是世界软件开发大师马丁·福勒(Martin Fowler),正如在20前的第一版中一样,在这第二版中作者也首先向公众阐述了何为“重构”。在此书中,作者总结了人们可能会有的疑问,并一一予以解答,具体如下:
· 为什么应该重构代码?
· 如何辨别哪些代码需要重构?
· 如何成功重构代码?
在阅读此书后,人们将能更好地理解重构的过程及其一般原则,并将其快速应用于自己的代码库。另外,此书的读者可能还会额外获赠一个灵敏的“狗鼻子”,当自己的队友写的代码亟需重构时,这个鼻子就能立马闻出来并提醒对方。
《Head First设计模式》(Head First Design Patterns)
编程著作《Head First设计模式:重视大脑的学习指南》(Head First Design Patterns: A Brain-Friendly Guide)由埃里克·弗里曼(Eric Freeman)、伯特·贝茨(Bert Bates)、凯西·塞拉(Kathy Sierra)与伊丽莎白·罗伯森(Elisabeth Robson)合作完成,主要教授人们设计模式与方法,以供其他开发人员用于创建可重复使用且灵活度高的功能性软件。在该书中,有许多高质量的可视化图表,通过这些图表,读者们能够更加容易地学习新概念。
对于想要了解工厂、单例或者依赖注入等模式的人而言,这本书绝对是不二选择。由于本书所使用的案例均由Java写成,因此读者最好能对该语言或其它面向对象的编程语言有所了解。
《企业应用架构模式》(Patterns of Enterprise Application Architecture)
《企业应用架构模式》是马丁·福勒的又一力作,主要旨在探讨企业应用发展的实践。在本书中,前一部分主要是关于如何开发企业应用的教程;之后,作者又提供了40多种模式,用以解决在创建企业应用过程中可能会遇到的常见问题。此外,书中还包含许多UML图以及Java代码或C#代码示例。
通过阅读此书,人们将能够对企业应用进行分层,获悉组织业务逻辑的主要方法,使用MVC模式来组织Web应用,并且在多事务运行时处理并发数据。
然而,这本书正逐渐淘汰于时代无情的洪流中,因此许多现代术语都未及时更新,例如REST、云端、JSON等。尽管如此,此书仍然不啻为一本好书,但在真正阅读时要注意取其所长,弃其所短。
《修改代码的艺术》(Working Effectively with Legacy Code)
《修改代码的艺术》是世界级计算机专家迈克尔·费瑟(Michael Feathers)的经典之作,作者在书中提供了许多策略用于处理未经测试的大型遗留代码库。在这时,或许许多人都会心生疑惑:已经到2020年了,人们一直都有整洁且易于维护的代码和微服务,难道处理遗留代码还算得上什么大问题吗?实际上,事情绝非如此简单。目前对于大部分公司而言,遗留代码问题仍然是一大挑战。
通过阅读此书,人们将能够理解修改软件的一般机制,例如添加特性、修正缺陷、优化性能、改进设计等。除此之外,读者也能学会如何准备遗留代码的测试,以及如何确定哪些代码需要修改。
在本书中,作者还提供了包含Java、C++、C和C#的示例,并详细介绍了如何处理非面向对象的遗留代码。