健壮的Python
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

译者序

编写好代码

“如何编写一段好代码?”我经常被问到这样的问题。写了这么多年代码,我心中仍然没有一个标准答案。但是,我清楚地知道,什么样的代码是被人诟病的“烂代码”:只能自己看懂甚至过段时间自己都看不懂的命名,牵一发而毁全身的神秘逻辑,读起来就像行走于盗梦空间一样的各种嵌套,等等。它们的产生一般都有一个共同原因:习惯着眼于现在而非未来。实现眼前的功能是大部分开发工作的第一要务,但是面向未来的思考往往能成就好的代码。

在职业生涯中,我接触过不少编程语言,回顾这些经历和经验,我发现语言或者工具并不是影响项目成功的关键,关键更在于开发者的意识。

意识,包含编码习惯、设计风格、基于未来的思考等,这些都深刻影响着一段代码的命运。这段代码可能平淡无奇,可能被人赞叹,也可能遭人唾弃。但是没错,它的优劣完全由创造者来掌握。本书虽然基于Python,却道出了很多编码过程中值得学习和应用的实践。换句话说,它不是在教我们如何用Python完成一个功能,而是在分享做好一个复杂项目的经验。

Python的进退

“人生苦短,我用Python”这句活跃在各大Python社区的名言,道出了Python语言的地位。作为一门动态解释性语言,Python简洁、优雅、容易上手,一直是众多编程爱好者喜爱的编程语言之一。但是往往也是因为这些“优点”,很多开发者都容易在Python的大型项目中“放飞自我”,如果我们仅仅关注利用Python提供的方便工具或者丰富的库来快速实现功能,不注重代码本身的质量和可维护性,那么随着时间的推移,这些本来写起来顺风顺水的代码在将来会变成一堆别人不想触碰的“垃圾山”。这也是业界对Python诟病最多的地方,因为它和其他同为强类型的语言(比如Java、C#)相比,缺乏了太多限制,这就让它显得更加脆弱,编写小型的工具或者库时可能表现不明显,可一旦用于大型的工程项目,很多人都会望而却步。这也是我们很难看到Python大规模应用到国内很多企业和大型项目中的原因。

然而,这并不意味着Python不够强大,换句话说,Python作为灵活的强类型语言也可以长久健壮地应用在大型复杂项目中。本书基于Python 3论证了这一观点,并通过代码实践从各个角度来告诉大家如何编写面向未来的Python代码,以及如何优雅、合理地实现代码的健壮性。

关于本书内容

本次非常有幸与三位同事周伟、凌锐、凌云一起翻译本书。本书通过四个部分分享了如何编写健壮Python代码:

第一部分“为代码添加类型注解”。介绍类型检查如何在保证健壮性的工作中扮演重要角色。

第二部分“定义你自己的类型”。用面向对象的思维增加代码的健壮性。

第三部分“可扩展的Python”。借助一些设计思想和常见架构,进一步提升代码质量。

第四部分“构建安全网”。用静态检查和测试完善整个代码的安全网。

读者得以从四个不同的角度了解各种Python技巧,并借助其中的例子加强“编写良好代码”(不只是Python)的意识。

作为一名接触Python语言、OOP以及敏捷技术实践多年的架构师及开发者,我个人也从中学到了很多Python的技巧。希望阅读此书的读者都能有所收获,并能够将其中一些做法或者思想应用到自己的职业生涯或者编码工作中。

共勉与致谢

“时人不识凌云木,直待凌云始道高。”这些保证/增强代码健壮性的做法往往在一开始并不会彰显它的魅力,但只要你坚持做正确的事情,它的作用和影响便一定会在日后慢慢凸显。

“不积跬步,无以至千里。”希望大家不仅在编程过程中能够保持追求完美、持续改进的习惯,而且在自己的学习生活过程中同样能够如此。从日常中积累,从细微处成长,早日实现自己工作和生活中的每一个目标。与君共勉!

感谢家人、朋友对我繁忙工作之余翻译本书的无条件支持,他们的陪伴和鼓励一直是我前行的动力。同时特别感谢刘小雪、张婕、金余等朋友在本书翻译过程中给予的支持与帮助。

最后再次感谢各位的阅读。翻译过程难免有错漏,欢迎大家多提宝贵意见,以助本书译本的后期改善。

姚文杰

凯捷咨询数字化团队架构师

市场上介绍Python编程的书籍很多,许多开发人员只接触了Python语言的表面,而没有深入学习Python编程的所有工具和技巧。通过阅读本书,你将学会如何更好地使用Python,你将接触许多使得Python整洁并可维护的方法。这样,未来的维护者也将会喜爱并使用你写出的每段代码,因为它是预先“精心设计”的。本书不只是编程的参考书,更是便于与公司和组织内的开发人员一起探讨如何最好地应用这些编程原则的指南。

本书的翻译工作历时9个多月,其间因为承接了规模庞大而复杂的项目以及在客户现场工作等,导致翻译工作进展缓慢,感谢几位伙伴的理解和支持。此外,我的儿子也在学习Python的课程,我也希望借翻译此书的过程加深对Python的理解并能和儿子共同学习。感谢我的妻子对翻译工作的支持,也很高兴能把此书作为一周岁的生日礼物送给我的女儿。

最后,祝读者享受Python的编程实践之旅!

周伟

凯捷咨询数字化团队资深项目经理

我们都知道Python是一门语法简单、设计优雅的语言,“低门槛”和“易用”这两个特点造就了它活跃的生态,进而使它拥有了大量库和语法糖,并成为编程零基础选手快速入门的不二之选。

但与此同时,作为Python语言的使用者和软件交付咨询师,我深知我们不能因为手里有把好的砍柴刀就对危机四伏的软件世界掉以轻心甚至洋洋得意。软件工程所要应对的根本问题并不会凭空消失,很庆幸有Patrick Viafore这样务实的技术作者能深入浅出地给软件从业者分享写出好代码的原则、方法与工具,因此本书也同样适用于使用其他编程语言的读者。

非常感谢能有机会阅读并翻译这本好书,书中关于类型和测试的解读让我格外印象深刻,这些思考一定会对我的职业生涯产生深远的影响。希望读完本书的你和我一样,能在今后的工作中更畅快地感叹:“人生苦短,我用Python。”开卷有益,谢谢阅读。

梁凌锐

凯捷咨询数字化团队敏捷咨询顾问

Python是一门简单易学并且功能非常强大的编程语言,所以即使你是编程新手,也可以通过自学很快上手。但是随着软件系统变得越来越复杂,仅仅接触Python的表面是远远不够的,否则软件系统会因为膨胀而变得脆弱。因此,深入学习编写健壮的Python代码所需的所有工具和技巧是非常重要的。本书适用于有一定Python编程经验的读者,涵盖许多高级Python特性,但目的不仅仅是让读者会使用这些特性,而是基于这些特性去讨论你的选择会对代码的可维护性产生哪些影响。

非常荣幸能够有机会翻译这本书,读万卷书,行万里路,希望大家的编程之旅更加精彩。

杨凌云

凯捷咨询北方测试团队负责人