当前位置:网站首页>作为一名开发者,对你影响最深的书籍是哪一本?
作为一名开发者,对你影响最深的书籍是哪一本?
2022-06-24 13:04:00 【人邮异步社区】
影响几代程序员的书非《重构 改善既有代码的设计(第2版 平装版)》莫属。软件开发大师马丁·福勒(Martin Fowler)的不朽经典,普通程序员进阶到编程高手必须修炼的秘笈。
豆瓣评分9.3

一线的实践者们经常很随意地使用“重构”这个词——软件开发领域的很多词汇都有此待遇。
重构(名词):对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。
这个定义适用于我在前面的例子中提到的那些有名字的重构,例如提炼函数和以多态取代条件表达式。
动词形式的定义是:
重构(动词):使用一系列重构手法,在不改变软件可观察行为的前提下,调整其结构。
过去十几年,这个行业里的很多人用“重构”这个词来指代任何形式的代码清理,但上面的定义所指的是一种特定的清理代码的方式。重构的关键在于运用大量微小且保持软件行为的步骤,一步步达成大规模的修改。每个单独的重构要么很小,要么由若干小步骤组合而成。因此,在重构的过程中,我的代码很少进入不可工作的状态,即便重构没有完成,我也可以在任何时刻停下来。
如果有人说他们的代码在重构过程中有一两天时间不可用,基本上可以确定,他们在做的事不是重构。
本书是一本为专业程序员编写的重构指南。我的目的是告诉你如何以一种可控且高效的方式进行重构。你将学会如何有条不紊地改进程序结构,而且不会引入错误,这就是正确的重构方式。
本书的目标读者是专业程序员,也就是那些以编写软件为生的人。书中的范例和讨论,涉及大量需要详细阅读和理解的代码。这些例子都用JavaScript写成,不过这些重构手法应该适用于大部分编程语言。为了理解书中的内容,读者需要有一定的编程经验,但需要的知识并不多。
20余年口碑如潮的计算机科学名著《编程珠玑》也是影响几代程序员的一本书,作者乔恩·本特利(Jon Bentley)计算机科学家,被誉为影响算法发展的十位大师之一。
豆瓣评分8.5

程序员都是乐观主义者,他们总是试图走捷径:编写函数代码,并将其插入系统中,然后热切地期望它能运行。有时候这样做行得通。但是有千分之九百九十九的概率,这样做会导致一场灾难:人们不得不在巨型系统的迷宫中操纵这个小小的函数。
每个程序员都知道调试是很困难的。但是,伟大的调试人员可以使这个工作看起来很简单。心烦意乱的程序员向调试大师描述了一个他们花费数小时也没有捕捉到的错误,而大师询问了几个问题之后,他们花几分钟的时间就找到了错误代码。专业的调试人员永远也不会忘记,无论系统的行为乍看起来多么神秘莫测,其背后总有合乎逻辑的解释。
本书描述了计算机编程更具魅力的一面:在可靠的工程之外,在洞察力和创造力范围内结晶而出的编程珠玑。正如自然界中的珍珠来自于磨砺牡蛎的细沙一样,这些编程珠玑来自于磨砺程序员的实际问题。书中的程序都很有趣,传授了重要的编程技巧和基本的设计原理。
阅读本书的一个提示:不要读得太快。要仔细阅读,一次读一章。要尝试解答书中提出的问题——有些问题需要集中精力思考一两小时才会变得容易。然后,要努力解答每章末尾的习题:当读者写下答案时,从本书学到的大部分知识就会跃然纸上。如有可能,要先与朋友和同事讨论一下自己的思路,再去查阅本书末尾的提示和答案。每章末尾的“深入阅读”并不算是学术意义上的参考文献表,而是我推荐的一些好书,这些书是我个人藏书的重要部分。
本书是计算机科学方面的经典名著。书的内容围绕程序设计人员面对的一系列实际问题展开。作者Jon Bentley 以其独有的洞察力和创造力,引导读者理解这些问题并学会解决方法,而这些正是程序员实际编程生涯中至关重要的。本书的特色是通过一些精心设计的有趣而又颇具指导意义的程序,对实用程序设计技巧及基本设计原则进行了透彻而睿智的描述,为复杂的编程问题提供了清晰而完备的解决思路。本书对各个层次的程序员都具有很高的阅读价值。
最后再推荐一本《代码整洁之道》鲍勃大叔作品,程序员,汇聚编程数十年编程生涯的心得体会,阐释如何解决软件开发人员、项目经理及软件项目领导们所面临的棘手的问题。
豆瓣评分:8.6
有豆瓣读者给以下几本书做了排序,顺便问一下,你的书架上的书做了哪些排序。《代码整洁之道》>《代码大全》>《重构》

只要你干过两三年编程,就有可能曾被某人的糟糕的代码绊倒过。如果你编程不止两三年,也有可能被这种代码拖过后腿。进度延缓的程度会很严重。有些团队在项目初期进展迅速,但有那么一两年的时间却慢如蜗行。对代码的每次修改都影响到其他两三处代码。修改无小事。每次添加或修改代码,都得对那堆扭纹柴了然于心,这样才能往上扔更多的扭纹柴。这团乱麻越来越大,再也无法理清,最后束手无策。
你是否遇到过某种严重到要花数个星期来做本来只需数小时即可完成的事的混乱状况?你是否见过本来只需做一行修改,结果却涉及上百个模块的情况?这种事太常见了。
怎么会发生这种事?为什么好代码会这么快就变质成糟糕的代码?理由多得很。我们抱怨需求变化背离了初期设计。我们哀叹进度太紧张,没法干好活。
本书提出一种观念:代码质量与其整洁度成正比。干净的代码,既在质量上较为可靠,也为后期维护、升级奠定了良好基础。作为编程领域的佼佼者,本书作者给出了一系列行之有效的整洁代码操作实践。这些实践在本书中体现为一条条规则(或称“启示”),并辅以来自现实项目的正、反两面的范例。只要遵循这些规则,就能编写出干净的代码,从而有效提升代码质量。
本书阅读对象为一切有志于改善代码质量的程序员及技术经理。书中介绍的规则均来自作者多年的实践经验,涵盖从命名到重构的多个编程方面,虽为一“家”之言,然诚有可资借鉴的价值。
边栏推荐
- 港股上市公司公告 API 数据接口
- 六石管理学:垃圾场效应:工作不管理,就会变成垃圾场
- [pytoch] quantification
- GO语言并发模型-MPG模型
- SSH keygen configuration does not require entering a password every time
- Kotlin shared mutable state and concurrency
- Maximum path sum in binary tree [handle any subtree, then handle the whole tree]
- Unit contour creation method
- GO语言-goroutine协程的使用
- Grendao usage problems
猜你喜欢

Baidu map API drawing points and tips

SAP Marketing Cloud 功能概述(四)

SaaS management system solution of smart Park: enabling the park to realize information and digital management

百度地图API绘制点及提示信息

box-sizing

常见的单例模式&简单工厂

简谈企业Power BI CI /CD 实施框架

markdown/LaTeX中在字母下方输入圆点的方法

Overview of SAP marketing cloud functions (III)

Defeat the binary tree!
随机推荐
Antd checkbox, limit the selected quantity
Three efficient programming skills of go language
卷积核、特征图可视化
Preliminary study on AQS
Method of establishing unity thermodynamic diagram
How to solve the problem that iterative semi supervised training is difficult to implement in ASR training? RTC dev Meetup
智源社区周刊#86:Gary Marcus谈大模型研究可借鉴的三个语言学因素;谷歌提出媲美Imgen的文生图模型Parti;OpenAI提出视频预训练模型VPT,可玩MC游戏
4 reasons for "safe left shift"
How to avoid placing duplicate orders
如何解决 Iterative 半监督训练 在 ASR 训练中难以落地的问题丨RTC Dev Meetup
Record various sets of and or of mongotemplate once
tongweb使用之端口冲突处理办法
SSH keygen configuration does not require entering a password every time
Development of digital Tibetan product system NFT digital Tibetan product system exception handling source code sharing
打败 二叉树!
3环杀掉360安全卫士进程
Win10 system problems
postgresql 之 ilist
10_那些格調很高的個性簽名
leetcode.12 --- 整数转罗马数字