程序员必读书籍有哪些值得推荐一下,程序员必读书籍有哪些值得推荐读的
异步君来推荐几本程序员必读的书。
1.重构以改进现有代码的设计(第二版平装版)
重构(名词):对软件内部结构的调整,目的是在不改变其可观察行为的情况下,提高其可理解性,降低其修改成本。
这个定义适用于我在前面的例子中提到的那些命名的重构,比如精化函数(106)和用多态性替换条件表达式(272)。
动词形式的定义是:
重构(动词):使用一系列重构技术来调整软件的结构,而不改变其可观察到的行为。
如果有人说自己的代码在重构过程中有一两天不可用,基本上可以确定自己在做的事情不是重构。
没有重构,程序的内部设计(或者架构)会逐渐变差。当人们只是为了短期目的而修改代码时,他们往往并不完全理解架构的整体设计,因此代码逐渐失去了自己的结构。程序员越来越难以通过阅读源代码来理解原设计。结构的丧失具有累积效应。越难看清代码所代表的设计意图,就越难保护其设计,设计也就腐败得越快。频繁的重构有助于代码保持正确的形式。
为了完成同样的事情,设计糟糕的程序通常需要更多的代码,这通常是因为代码在不同的地方使用完全相同的语句来做同样的事情。因此,改进设计的一个重要方向是消除重复代码。减少代码量并不会让系统运行得更快,因为对程序的资源占用几乎没有明显影响。然而,代码量的减少将使将来可能的程序修改动作变得容易得多。代码越多,就越难做出正确的修改,因为要理解的代码越多。我在这里做了一些修改,但是系统并没有像预期的那样工作,因为我没有在另一个地方修改代码,——,它做了几乎相同的事情,但是在一个稍微不同的环境中。通过消除重复代码,我可以确定所有的事情和行为在代码中只表达一次,这是好设计的基础。
这本书是专业程序员的重构指南。我的目的是告诉你如何以可控和高效的方式进行重构。你将学习如何在不引入错误的情况下有序地改进程序结构。这是重构的正确方法。
传统上,书籍应该从概念介绍开始。虽然我同意这个原则,但是我发现通过泛泛的讨论或者定义来引入重构并不容易。因此,我决定用一个例子作为先锋。第1章展示了一个有一些常见设计缺陷的小程序。为了更容易理解和修改,我对它进行了重构。在此期间,您可以看到重建的过程和几种有用的重建技术。如果你想知道重构是怎么回事,这一章是必不可少的。
第2章讨论了重构的一般原则和定义,以及重构的原因。我还简单介绍了重构面临的一些挑战。在第三章中,Kent Beck介绍了如何嗅出代码中的“恶趣味”,以及如何利用重构去除这些“恶趣味”。它在测试重构中起着非常重要的作用。第4章介绍了如何用代码构建测试。
第5章是本书的核心部分:3354重建目录。
2、代码整洁。
可能有人觉得关于代码的书有点落伍了,——的代码已经不是问题了;我们应该关注模型和需求。事实上,有人说我们正接近守则的终点。很快,代码就会自动生成,不需要手动编写。程序员完全没用,因为业务人员可以直接从规范生成程序。
扯淡!我们永远不能扔掉代码,因为它代表了需求的细节。在某些层面上,这些细节是不可忽视或抽象的,必须要说清楚。将需求定义到机器可以执行的详细程度是编程应该做的事情。这个惯例就是代码。
假设你认为令人困惑的代码是罪魁祸首,假设你接受快速完成的唯一方法是保持代码干净,你肯定会问自己:“我怎样才能写出干净的代码?”但是,如果你不明白整洁对代码意味着什么,那么试图写出整洁的代码是没有用的!
坏消息是,编写整洁的代码很像绘画。大多数人都知道一幅画是好是坏。但是会分辨好坏不代表会画画。能够区分干净代码和脏代码并不意味着你能写出干净的代码!
要写出整洁的代码,你需要遵循大量的提示,并实现你辛苦学来的“整洁感”。这种“代码感”是关键。有些人天生就有。有些人很难得到它。它不仅让我们看到了法典的优点和缺点,也给了我们一个凭借戒律把坏事变成好事的策略。
缺乏“代码感”的程序员,视乱为乱,无处下手。有“代码感”的程序员可以从混乱中看到其他的可能性和变化。“代码感”帮助程序员选择最佳方案,指导程序员制定修改行动计划。
简而言之,一个写出整洁代码的程序员就像一个艺术家。他可以通过一系列的变换,把一个白板变成一个由优雅的代码组成的系统。
《代码整洁之道》
大致可以分为三个部分。前面的章节介绍了编写整洁代码的原则、模式和实践。本节中有相当多的示例代码,阅读起来很有挑战性。读完这些章节后,我准备好阅读第2部分。如果你就此打住,我只能祝你好运了!
第2部分花费的时间最多。这一部分包括几个越来越复杂的案例研究。每个案例都会清理一些代码——,并将有问题的代码变成问题较少的代码。这部分极其详细。你的思维必须在解释和代码段之间跳跃。你必须分析和理解那些代码,弄清楚每一个修改的来龙去脉。
你的努力将在第三部分得到回报。这一部分只有一章,列举了上述案例研究给我们的启示和启发。在回顾和清理案例中的代码时,我们把每一个操作的原因都记录下来,作为一个启示或启发。我们试图理解我们对阅读和修改代码的反应,并试图理解我们为什么会有这种感觉,为什么会有这种行为。由此,获得了一套描述编写、阅读和清理代码的思维方式的知识库。
如果你在阅读第2部分的案例研究时没有努力学习,那么这个知识库对你来说可能价值不大。在这些案例研究中,每一次修改都被小心地标上了相关的启蒙标签。这些标记用方括号标注,比如【H22】。由此可以看出这些启示是在怎样的环境下应用和书写的。启示本身是没有价值的,但是案例研究中的启示和清理代码的具体决策之间的关系是有价值的。
如果您跳过案例研究部分,只阅读第1部分和第3部分,这只是另一本关于编写优秀软件的“感觉良好”的书。但如果你愿意花时间去琢磨那些案例,一步一步站在作者的角度,强迫自己用作者的思维路径去考虑问题,你就能对这些原理、模式、做法、启示有更深的理解。这样,就像一个熟练的自行车手,自行车就像他身体的延伸;对你来说,本书介绍的整洁代码的原则、模式、实践和启示成为你自己的技能,而不是“感觉良好”的知识。
3.软技能:超越代码的生存指南(第二版)
大多数关于软件开发的书都是关于软件开发本身的,但这本书不是。关于如何写出高质量的代码,如何利用各种技术的书很多,但是很难找到一本能告诉我如何成为一名优秀的软件开发人员的书。
我说的“优秀的软件开发人员”并不是指擅长编码、解决缺陷和熟悉单元测试。相反,我所说的“优秀的软件开发人员”是那些能够掌控自己的事业,实现自己的目标,享受生活的人。当然,其他技能也很重要,但我还是假设你已经掌握了如何用C语言实现排序算法,或者知道如何保证你写的代码不会让你的后续维护人员想用车碾你.
毫无疑问,这本书讲的不是“你能做什么”。这本书是关于“你自己”的3354关于你的职业、你的生活、你的身体、你的思想和你的灵魂3354如果你确信灵魂存在的话。
在这本书里,你会发现很多看似不相关的主题串联在一起,但这种无序背后其实另有深意。这本书分为七个部分,每个部分关注软件开发人员生活的不同方面。如果要对这些内容进行分类和分组,最简单的方法就是把它们看成事业、头脑、身体和精神。
这本书关注了软件开发人员生活的方方面面,从揭示面试过程,到精心制作杀手级简历,到制作受欢迎的视频内容,到打造你的个人品牌,到提高你的工作效率,到对抗职业倦怠,甚至到投资房地产和关注你的健康。本书分为职业、自我营销、学习、生产力、理财、健身、心态七个章节,总结了软件行业从业人员所需的各种“软技能”。通过阅读这本书,软件工程师、程序员和其他技术人员可以积极思考自己的职业生涯,丰富自己的生活,让自己更接近成功。
4.《计算的灵魂》(畅销书作家吴军博士新作,如《数学之美》 《浪潮之巅》)
1.《数学之美》伴侣作品,吴军博士时隔近10年在科技领域的重要新作。
2.序李国杰院士、郑为民院士推荐,以及Aauto Quicker联合创始人苏华、拼多多联合创始人陈雷推荐。
3.通过算法实例说明计算思维之美的杰作。100,全书举例,是作者在Google和腾讯使用的面试问题,或者是互联网企业和金融企业的面试问题。
4.五级工程师提升能力,持续发展的方法论。
5.内含精美书签和增值视频标题索引电子版的大型思维导图折叠式思维导图电子版。
作者在书中结合自己的计算机工程师五级分级标准,详细讲解了每一类问题不同级别的解决方案,不同级别的人可以思考什么深度,深入阐述了问题背后的计算机科学本质。通过对解题思路的对比和优化,读者不仅可以衡量自己的水平,在职业发展中走得更快,而且可以深入了解和掌握计算机科学和计算思维,逐步掌握计算机科学的艺术,取得一次又一次的成功。
对于所有有兴趣了解或研究科学技术,尤其是计算机科学的人来说,这本书不仅有助于了解计算机科学,而且有助于了解IT行业的技术特点,培养一些特殊的思维方式,掌握信息时代特殊的做事方式。通过具体事例,可以从“术”的层面提升到“道”的层面。
5.良好的工具程序员管理范例
面向项目经理和IT项目经理的团队管理手册!两位作者收集了80多年编程和管理实践的经验和教训,总结了300多条经验和智慧法则,解决了管理难题,打造了高效团队!
1.2作者从编程和管理实践中积累了80多年的宝贵经验,在软件研发管理、人员管理、团队管理等方面充满真知灼见。
2.收集300多条经过锤炼的经验法则和至理名言;
3.深入分析不同程序员的性格特征,展示大量关于招聘程序员、培养新程序员快速融入团队的操作性很强的技巧,强调程序员的性格、招聘与培训、激励与文化、敏捷管理;
4.阐述一系列行之有效的管理原则、方法和实践案例;
5.本章末尾附有“工具”一节。这些支持性的电子资源,如清单、表格和报告,可以让你更容易招募、管理和激励程序员。
主要内容包括:
(1)深入分析不同程序员的性格特征;
(2)展示大量关于招聘程序员、培训新程序员快速融入团队的操作性很强的技巧;
(3)全景式展现上层管理、下层管理、外部管理、软件交付过程管理的各种工具和技术,直击管理核心;
(4)引入能有效激励程序员、成功营造良好团队氛围的各种工具和技术;
(5)关注在敏捷开发的环境下,如何组织、划分、指导和辅导团队。
版权归作者所有:原创作品来自的博主异步社区,转载请联系作者取得转载授权,否则将追究法律责任。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。