程序员必读书籍有哪些值得推荐?

人邮异步社区 人邮异步社区     2022-12-01     591

关键词:

异步君来推荐几本程序员必读书籍。

1、重构 改善既有代码的设计(第2版 平装版)

重构(名词):对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。

这个定义适用于我在前面的例子中提到的那些有名字的重构,例如提炼函数(106)和以多态取代条件表达式(272)。

动词形式的定义是:

重构(动词):使用一系列重构手法,在不改变软件可观察行为的前提下,调整其结构。

如果有人说他们的代码在重构过程中有一两天时间不可用,基本上可以确定,他们在做的事不是重构。

如果没有重构,程序的内部设计(或者叫架构)会逐渐腐败变质。当人们只为短期目的而修改代码时,他们经常没有完全理解架构的整体设计,于是代码逐渐失去了自己的结构。程序员越来越难通过阅读源码来理解原来的设计。代码结构的流失有累积效应。越难看出代码所代表的设计意图,就越难保护其设计,于是设计就腐败得越快。经常性的重构有助于代码维持自己该有的形态。

完成同样一件事,设计欠佳的程序往往需要更多代码,这常常是因为代码在不同的地方使用完全相同的语句做同样的事,因此改进设计的一个重要方向就是消除重复代码。代码量减少并不会使系统运行更快,因为这对程序的资源占用几乎没有任何明显影响。然而代码量减少将使未来可能的程序修改动作容易得多。代码越多,做正确的修改就越困难,因为有更多代码需要理解。我在这里做了点儿修改,系统却不如预期那样工作,因为我没有修改另一处——那里的代码做着几乎完全一样的事情,只是所处环境略有不同。消除重复代码,我就可以确定所有事物和行为在代码中只表述一次,这正是优秀设计的根本。

本书是一本为专业程序员编写的重构指南。我的目的是告诉你如何以一种可控且高效的方式进行重构。你将学会如何有条不紊地改进程序结构,而且不会引入错误,这就是正确的重构方式。

按照传统,图书应该以概念介绍开头。尽管我也同意这个原则,但是我发现以概括性的讨论或定义来介绍重构,实在不是一件容易的事。因此,我决定用一个实例作为开路先锋。第1章展示了一个小程序,其中有些常见的设计缺陷,我把它重构得更容易理解和修改。其间你可以看到重构的过程,以及几个很有用的重构手法。如果你想知道重构到底是怎么回事,这一章不可不读。

第2章讨论重构的一般性原则、定义,以及进行重构的原因,我也大致介绍了重构面临的一些挑战。第3章由Kent Beck介绍如何嗅出代码中的“坏味道”,以及如何运用重构清除这些“坏味道”。测试在重构中扮演着非常重要的角色,第4章介绍如何在代码中构筑测试。

从第5章往后的篇幅就是本书的核心部分——重构名录

2、代码整洁之道

有人也许会以为,关于代码的书有点儿落后于时代——代码不再是问题;我们应当关注模型和需求。确实,有人说过我们正在临近代码的终结点。很快,代码就会自动产生出来,不需要再人工编写。程序员完全没用了,因为商务人士可以从规约直接生成程序。

扯淡!我们永远抛不掉代码,因为代码呈现了需求的细节。在某些层面上,这些细节无法被忽略或抽象,必须明确之。将需求明确到机器可以执行的细节程度,就是编程要做的事。而这种规约正是代码

假设你相信混乱的代码是祸首,假设你接受做得快的唯一方法是保持代码整洁的说法,你一定会自问:“我怎么才能写出整洁的代码?”不过,如果你不明白整洁对代码有何意义,尝试去写整洁代码就毫无所益!

坏消息是写整洁代码很像是绘画。多数人都知道一幅画是好还是坏。但能分辨优劣并不表示懂得绘画。能分辨整洁代码和肮脏代码,也不意味着会写整洁代码!

写整洁代码,需要遵循大量的小技巧,贯彻刻苦习得的“整洁感”。这种“代码感”就是关键所在。有些人生而有之。有些人费点劲才能得到。它不仅让我们看到代码的优劣,还予我们以借戒规之力化劣为优的攻略。

缺乏“代码感”的程序员,看混乱是混乱,无处着手。有“代码感”的程序员能从混乱中看出其他的可能与变化。“代码感”帮助程序员选出最好的方案,并指导程序员制订修改行动计划,按图索骥。

简言之,编写整洁代码的程序员就像是艺术家,他能用一系列变换把一块白板变作由优雅代码构成的系统。

《代码整洁之道》

大致可分为3个部分。前几章介绍编写整洁代码的原则、模式和实践。这部分有相当多的示例代码,读起来颇具挑战性。读完这几章,就为阅读第2部分做好了准备。如果你就此止步,只能祝你好运啦!

第2部分最需要花工夫。这部分包括几个复杂性不断增加的案例研究。每个案例都清理一些代码——把有问题的代码转化为问题少一些的代码。这部分极为详细。你的思维要在讲解和代码段之间跳来跳去。你得分析和理解那些代码,琢磨每次修改的来龙去脉。

你付出的劳动将在第3部分得到回报。这部分只有一章,列出从上述案例研究中得到的启示和灵感。在遍览和清理案例中的代码时,我们把每个操作理由记录为一种启示或灵感。我们尝试去理解自己对阅读和修改代码的反应,尽力了解为什么会有这样的感受、为什么会如此行事。结果得到了一套描述在编写、阅读、清理代码时思维方式的知识库。

如果你在阅读第2部分的案例研究时没有好好用功,那么这套知识库对你来说可能所值无几。在这些案例研究中,每次修改都仔细注明了相关启示的标号。这些标号用方括号标出,如:[H22]。由此你可以看到这些启示在何种环境下被应用和编写。启示本身不值钱,启示与案例研究中清理代码的具体决策之间的关系才有价值。

如果你跳过案例研究部分,只阅读了第1部分和第3部分,那就不过是又看了一本关于写出好软件的“感觉不错”的书。但如果你肯花时间琢磨那些案例,亦步亦趋——站在作者的角度,迫使自己以作者的思维路径考虑问题,就能更深刻地理解这些原则、模式、实践和启示。这样的话,就像一个熟练地掌握了骑车的技术后,自行车就如同其身体的延伸部分那样;对你来说,本书所介绍的整洁代码的原则、模式、实践和启示就成为了本身具有的技艺,而不再是“感觉不错”的知识。

3、软技能:代码之外的生存指南(第2版)

多数软件开发的书都是有关软件开发本身的,本书却不是。有大量的书论述如何编写优质代码、如何利用各种技术,但是很难找到一本能够告诉我“如何成为一名优秀的软件开发人员”的书。

当我说到“优秀的软件开发人员”时,我并不是说要精于编码之道,善于解决缺陷,通晓单元测试。相反,我所说的“优秀的软件开发人员”,是那些能够把控自己的职业生涯、达成目标、享受生活的人。当然,其他技能都很重要,不过我还是假定你已经精通如何使用C++语言实现排序算法,或者知晓如何确保写出的代码不至于让你的后继维护者恨不得驾车从你身上碾过……

毋庸置疑,这本书并不是在讨论“你能做什么”,这本书讨论的是“你自己”——关于你的职业生涯、你的生活、你的身体、你的思想以及你的灵魂——如果你确信灵魂存在的话。

在这本书里,你会发现不少看似无关的主题串联在一起,但这种无序的背后其实另有深意。本书共分为七篇,每一篇都聚焦在软件开发人员生活的不同方面。如果你想为这些内容分类和分组,最简易的方法是将它们看成是事业、思想、身体和精神四个方面。

本书聚焦于软件开发人员生活的方方面面,从揭秘面试的流程,到精心做出一份杀手级简历,到制作脍炙人口的视频内容,到打造你的个人品牌,到提高自己工作效率,到与职业倦怠做斗争,甚至到投资房地产和关注自己的健康。本书共分为职业篇、自我营销篇、学习篇、生产力篇、理财篇、健身篇、心态篇等七篇,概括了软件行业从业人员所需的各种“软技能”。通过阅读本书,软件工程人员、编程人员和其他技术人员能够积极思考自己的职业生涯,丰富自己的生活,让自己更接近成功。

4、计算之魂 (《数学之美》《浪潮之巅》等畅销书作者吴军博士新作)

1.《数学之美》姊妹篇,吴军博士时隔近10年在科技领域的重磅新作。

2.李国杰院士、郑纬民院士作序推荐,快手联合创始人宿华、拼多duo联合创始人陈磊倾情推荐。

3.一部通过算法例题来阐述计算思维之妙的大作。全书的例题+思考题100+,是作者在谷歌、腾讯使用过的面试题,或是头部互联网企业、金融企业的面试题,。

4.五级工程师提升能力、不断向上发展的方法论。

5.附赠大幅思维导图折页+思维导图电子版+精美书签+增值视频+题目索引电子版。

作者在书中结合自己对计算机工程师的五级分级标准,详细讲解了每类题目不同层次的解决方法、不同水平的人大约能思考到什么样的深度,深度阐述题目背后的计算机科学精髓。通过对比优化解题思路,读者不仅可以衡量自己的水平,在职业的发展道路上走得更快,更可以深刻理解并掌握计算机科学和计算思维,逐渐把握计算机科学这门艺术,获得重复性成功。

对于所有有志于了解或学习科技,特别是计算机科学的人来讲,本书不仅有助于了解计算机科学,更有助于了解 IT 产业的技术特点、培养一些特殊的思维方式、掌握信息时代特殊的做事方法,通过具体的例子,从“术”的层面获得“道”的层面的提升。

5、善工利器 程序员管理范式

程序设计经理、IT项目管理者的团队管理手册!2位作者集80余年编程和管理实践经验教训,总结300余条千锤百炼的经验法则与至理名言,破解管理难题,打造高效团队!

1.2作者从编程和管理实践中积累的80余年宝贵经验,充满软件研发管理、人员管理、团队管理等方面的真知灼见;
2.收集300余条经过千锤百炼而成的经验法则与至理名言;
3.深度剖析不同程序员的性格特征,展示大量操作性极强的有关招聘程序员和培养新晋程序员快速融入团队的技巧,强调程序员性格、招聘与培养、激励与文化、敏捷式管理;
4.阐述一系列被证明行之有效的管理原则、方法与实践案例;
5.章尾附有“工具”一节,这些配套的清单、表格和报告等电子资源可以使你感觉招聘、管理和激励程序员变得更加轻松。

主要内容包括:

(1)深度剖析不同程序员的性格特征;

(2)展示大量操作性极强的有关招聘程序员和培养新晋程序员快速融入团队的技巧;

(3)全景揭秘做好向上管理、向下管理、对外管理和软件交付过程管理的各种工具和技术,直击管理的核心;

(4)介绍有效激励程序员、成功创造良好团队氛围的各种工具和技术;

(5)着重讨论在敏捷开发的环境之下,如何做好团队的组织、分工、引导、教练等工作。

工商管理书籍推荐

...之一。第一次接触12Reads的书,是朋友推荐的《营销管理必读12篇》这本。当时还不太在意,总感觉12Reads的书名字中(“必读12篇”)透着一股俗气。潜意识里认为自我标榜为“必读”的书大多都不怎么样。然而,我... 查看详情

决策类书籍推荐

...书籍后,今天小编给大家带来的推荐是:《决策必读12篇》。相信很多朋友已经听过这本经典决策类书籍的大名,需要注意的是,这本书仅能从其官方网站购买哦。 那么,在提高决策能力方面,这本书与... 查看详情

销售值得看的书推荐

...许多多不同种类的销售书籍后,还是感觉《销售管理必读12篇》最值得推荐。 P.S.很多朋友 查看详情

创新书籍推荐

...08;并能达成学习目的)的创新书籍当属12Reads的《创新必读12篇》了(注:此书只能从其官网购买)。 创新书籍有那么多,为何唯独这本书值得推荐?其实,在书籍推荐这件事儿上,下至「平民草根... 查看详情

java程序员必读的书籍有哪些?

Java开发工程师一般负责后端开发,当然也有专门做JavaWeb的工程师,但是随着前后端的分离,越来越多的Java工程师需要往大后端方向发展。今天我们就来介绍一下Java后端开发者的书单。我在两年的学习历程中看了很... 查看详情

定位后端开发,有哪些书籍值得推荐?

很多人会想到各种大部头的经典书籍,那些书确实是非常经典,但是能不能让人坚持看下去是一回事,就像有些道理人人都懂,但是能践行下去的少之又少一样。下面根据我自己的读书经验和工作感受来谈一下... 查看详情

定位后端开发,有哪些书籍值得推荐?

很多人会想到各种大部头的经典书籍,那些书确实是非常经典,但是能不能让人坚持看下去是一回事,就像有些道理人人都懂,但是能践行下去的少之又少一样。下面根据我自己的读书经验和工作感受来谈一下... 查看详情

mba课程书籍推荐

...A课程书籍值得推荐?我个人最喜欢读的MBA书籍是《MBA必读12篇》,也愿意把它推荐给更多的人。首先需要说明的是,这本书仅能从其官方购买,为避免广告具体地址请自己百度吧。 虽然我并非MBA科班出身,但... 查看详情

java程序员必读精选书籍分享,强烈推荐

作为一名Java程序员,在这里为大家推荐一些必读的技术书籍,分享一些我自己的看法和见解,以及一些有助于Java程序员成长的资料啦。书籍推荐原则:技术书籍不宜一下读太多,太多的书会打消你的积极性&#x... 查看详情

吴永华的博客都有哪些

您好,吴永华的博客有:1.《程序员的自我修养》:这是一本关于程序员职业素养的书,涵盖了程序员的职业素养、职业规划、职业发展等内容,是程序员必读的书籍。2.《程序员的职业发展》:这是一本关于程序员职业发展的... 查看详情

javascript新手入门必读书籍推荐

在当下,极多的程序员是通过自学来完成入门以及提升的。对于JavaScript的学习来说,同样不例外。许多新手入门javascript选择通过视频教程或者论坛交流的方式进行学习,这种方式固然较为轻松和便捷,但在知识的获取上有些碎... 查看详情

值得一看的创业书籍推荐

...本创业书籍最值得推荐,个人认为还是12Reads的《创业必读12篇》这本。P.S.很多小伙伴向笔者抱怨说这本书买不到,我只想说请善用搜索引擎,这本书只能从其官网获得。对于一名创业者或管理者而言,不要什么都... 查看详情

值得一看的创业书籍推荐

...本创业书籍最值得推荐,个人认为还是12Reads的《创业必读12篇》这本。P.S.很多小伙伴向笔者抱怨说这本书买不到,我只想说请善用搜索引擎,这本书只能从其官网获得。对于一名创业者或管理者而言,不要什么都... 查看详情

计算机编程:必读书籍推荐

编程核心前置知识:技术是不断更新迭代的,我们更需要掌握的是不变性的知识。不管技术栈有多么新,多么庞杂,都离不开以下四个方面:1.计算机组成原理2.操作系统3.计算机网络4.数据结构书籍推荐:C语言:入门:CPrimerPlusC++:... 查看详情

c++必读书籍推荐

手册类–所有级别C++程序设计语言(TheC++ProgrammingLanguage)作者:BjarneStroustrup(更新到C++11) C++之父写的经典C++书籍。内容覆盖C++的所有东西,从语言内核到标准库、编程范式和语言哲学(这... 查看详情

人际交往类的书籍推荐

...哪些?人际交往类的书籍我个人只推荐《沟通与说服必读12篇》及《情商必读12篇》这两本。 这两本书均出自12Reads,注意仅能从其官网购买哦,其他平台是没有的。如果你能看完这两本人际关往相关书籍,沟通技... 查看详情

免费的编程中文书籍索引

...ace/p/4967662.html免费的编程中文书籍索引,欢迎投稿。国外程序员在 stackoverflow 推荐的程序员必读书籍,中文版。stackoverflow 上的程序员应该阅读的非编程类书籍有哪些? 中文版github&n 查看详情

知乎上面都有哪些计算机科学与软件工程方面值得一看的问答?

...计算机本科应届毕业生要有怎样的能力才算比较好的?-程序员书单、资源Students-GuidetoTechnicalDevelopment程序员必读书单1.0resources-Whatisthesinglemostinfluentialbookeveryprogrammershouldread?有哪些可以提高程序员技术档次的书或博客?-编程\\Cour... 查看详情