代码的质量越高,就越可能制作出更可靠、更容易维护、缺陷更少的软件。提高代码质量的许多原则关心的不仅是在初期确保软件达到上述标准,而且在整个软件生命期中需求发展和新场景出现时一直保持这种状态。

我在编写代码的时候要实现的4个高层目标如下:

  • 代码应该正常工作;
  • 代码应该持续正常工作;
  • 代码应该适应不断变化的需求;
  • 代码不应该重复别人做过的工作。

提高代码质量需要看哪些书?

1、好代码 ,坏代码

Google开发工程师从零讲解高质量代码,整合作者及团队多年的软件开发实践经验,通过50+条锦囊妙计、100+个案例,帮你轻松理解和掌握编程技能。

本书介绍专业软件工程师经常用于编写可靠的、易于维护的代码的关键概念与技术。本书并不是简单列举“该做”和“不该做”的事项,而是旨在解释每个概念和技术背后的核心理论,以及需要权衡的因素。这应该能够帮助读者对如何像一位经验丰富的软件工程师那样思考和编程有基本的理解。

本书的目标读者是那些已经具备基本编程技能,想继续提高编程技能的人。本书适合有0~3年软件工程师工作经验的人阅读。有丰富工作经验的工程师可能发现,本书中的许多内容他们都已经掌握,但我希望他们把这本书当作指导其他同行的有用资源。

在阅读任何关于软件工程的书籍或文章时,一定要记住这是主观的论题,并且对现实问题的解决方案通常不是完全明晰的。按照我的经验,优秀的工程师总是带着健康的怀疑心态去阅读任何文章,并渴望理解其中的基本思路。人们的观点各不相同且不断发展,同时可用的工具和编程语言也在不断改进。想要知道在何时运用特定建议、何时忽略它们,就必须理解它们的缘由、背景以及限制范围。

本书旨在收集一系列有用的主题和技术,以引导工程师写出更好的代码。尽管考虑这些主题和技术或许是明智之举,但不应该将其看成绝对正确的理论,或者将其作为绝不能破坏的硬性规则。良好的判断力是优秀工程师必不可少的特征。

本书分享的实用技巧可以帮助你编写鲁棒、可靠且易于团队成员理解和适应不断变化需求的代码。内容涉及如何像高效的软件工程师一样思考代码,如何编写读起来像一个结构良好的句子的函数,如何确保代码可靠且无错误,如何进行有效的单元测试,如何识别可能导致问题的代码并对其进行改进,如何编写可重用并适应新需求的代码,如何提高读者的中长期生产力,同时还介绍了如何节省开发人员及团队的宝贵时间,等等。

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

重构20年,生动阐述重构原理和具体做法,普通程序员进阶到编程高手的修炼秘笈和代码整洁之道。

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

下面我要告诉你,如何能够在不通读全书的情况下充分用好它。

  • 如果你想知道重构是什么,请阅读第1章,其中的示例会让你弄清楚重构的过程。
  • 如果你想知道为什么应该重构,请阅读前两章,它们会告诉你重构是什么以及为什么应该重构。
  • 如果你想知道该在什么地方重构,请阅读第3章,它会告诉你一些代码特征,这些特征指出“这里需要重构”。
  • 如果你想着手进行重构,请完整阅读前四章,然后选择性地阅读重构名录。一开始只需概略浏览列表,看看其中有些什么,不必理解所有细节。一旦真正需要实施某个重构手法,再详细阅读它,从中获取帮助。列表部分是供查阅的参考性内容,你不必一次就把它全部读完。

本书是经典著作《重构》出版20年后的更新版。书中清晰揭示了重构的过程,解释了重构的原理和实践方式,并给出了何时以及何地应该开始挖掘代码以求改善。书中给出了60多个可行的重构,每个重构都介绍了一种经过验证的代码变换手法的动机和技术。本书提出的重构准则将帮助开发人员一次一小步地修改代码,从而减少了开发过程中的风险。

3、代码整洁之道

鲍勃大叔作品,程序员,汇聚编程数十年编程生涯的心得体会,阐释如何解决软件开发人员、项目经理及软件项目领导们所面临的棘手的问题。

代码确然是我们最终用来表达需求的那种语言。我们可以创造各种与需求接近的语言。我们可以创造帮助把需求解析和汇整为正式结构的各种工具。然而,我们永远无法抛弃必要的精确性——所以代码永存。

你当然曾为糟糕的代码所困扰过。那么——为什么要写糟糕的代码呢?

是想快点完成吗?是要赶时间吗?有可能。或许你觉得自己要干好所需的时间不够;假使花时间清理代码,老板就会大发雷霆。或许你只是不耐烦再搞这套程序,期望早点结束。或许你看了看自己承诺要做的其他事,意识到得赶紧弄完手上的东西,好接着做下一件工作。这种事我们都干过。

我们都曾经瞟一眼自己亲手造成的混乱,决定弃之而不顾,走向新一天。我们都曾经看到自己的烂程序居然能运行,然后断言能运行的烂程序总比什么都没有强。我们都曾经说过有朝一日再回头清理。当然,在那些日子里,我们都没听过勒布朗(LeBlanc)法则:稍后等于永不(Later equals never)。

学写整洁代码很难。它可不止于要求你掌握原则和模式。你得在这上面花工夫。你须自行实践,且体验自己的失败。你须观察他人的实践与失败。你须看看别人是怎样蹒跚学步,再转头研究他们的路数。你须看看别人是如何绞尽脑汁做出决策,又是如何为错误决策付出代价。

阅读本书要多用心思。这可不是那种降落前就能读完的“感觉不错”的飞机书。本书要让你用功,而且是非常用功。如何用功?阅读代码——大量代码。而且你要去琢磨某段代码好在什么地方、坏在什么地方。在我们分解,而后组合模块时,你得亦步亦趋地跟上。这得花些工夫,不过值得一试。

4、代码整洁之道:程序员的职业素养

代码整洁之道CleanCode姐妹篇编程大师40余年心得体会阐释软件工艺中的原理技术工具和实践助力专业软件开发人员具备令人敬佩的职业素养。

本书是编程大师“Bob 大叔”40余年编程生涯的心得体会的总结,讲解要成为真正专业的程序员需要具备什么样的态度,需要遵循什么样的原则,需要采取什么样的行动。作者以自己以及身边的同事走过的弯路、犯过的错误为例,意在为后来者引路,助其职业生涯迈上更高台阶。

代码之外你的书架上最好还有这样一本书:

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

程序员、软件开发人员职业生涯指南,凸显技术中”人”的因素,聆听软件开发人员人生导师JohnZ.Sonmez的经验之谈,讲解IT行业从业者所需要知道的”软技能” 。

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

毋庸置疑,这本书并不是在讨论“你能做什么”,这本书讨论的是“你自己”——关于你的职业生涯、你的生活、你的身体、你的思想以及你的灵魂——如果你确信灵魂存在的话。现在,我并不希望你把我想象成为某种类型的疯子。我不是一个持超验主义思想的和尚,能坐在地板上一边冥想一边抽着仙人掌叶子做成的卷烟,还试着帮你提升到更高层次的顿悟。恰恰相反,我觉得你会发现我是一个非常脚踏实地的人,我不过恰好正在思索——作为一名软件开发人员如何超越编写代码本身?

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