第3章 优质代码的通用特征
本书的主题是使用Python开发软件,而优质软件源自优质设计。看到“整洁代码”的字样后,你可能认为本书只探索与软件实现细节相关的最佳实践,而不会涉及软件设计,但这种想法是错误的,因为代码和设计是一回事——代码即设计。
代码可能是最详尽的设计表示。前两章讨论了代码结构一致很重要的原因,并介绍了让代码紧凑、更符合Python语言习惯的惯用法。现在该让你明白整洁代码必须结构一致、紧凑且符合Python语言习惯,但又远不止如此,其终极目标是尽可能强大、缺陷尽可能少(或者说缺陷是易于发现的)。
在本章和第4章中,我们会从较高的抽象层次出发专注于设计原则,并阐述适用于Python的通用软件工程原则。
具体地说,本章将回顾各种确保软件设计优良的原则。要打造高质量的软件,必须围绕着这些原则进行,将其作为设计工具。但这并不意味着在任何情况下都要遵守所有的原则,实际上,有些原则代表的是不同的观点,如截然相反的契约式设计(Design by Contract,DbC)和防御式编程。根据具体情况,有些原则可能并不适用。
高质量代码是个多维度的概念,可像看待软件架构的质量属性一样看待这些维度。例如,我们希望软件安全、性能良好、可靠、易于维护等。
本章的学习目标如下。
● 明白强大软件背后的概念。
● 学习如何处理在应用程序工作流程中出现的错误数据。
● 设计易于维护且可根据新需求轻松地扩展的软件。
● 设计可重用的软件。
● 编写有效的代码,确保开发团队的高效率。
3.1 契约式设计
在我们正在开发的软件中,有些部分并非供用户直接调用的,而是供其他代码调用的。为分解职责而将应用程序划分得到的不同组件或分层就属于这种情况,因此必须考虑它们之间的交互。
我们必须在每个组件的后面封装某种功能,并向要使用该功能的客户端暴露一个接口,即应用程序编程接口(API)。我们为组件编写的函数、类或方法在特定的条件下以特定的方式工作,如果这些条件不满足,代码将崩溃。反之,调用代码的客户端期待特定的响应,如果函数不能提供这样的响应,就意味着存在缺陷。 ...
Get 编写整洁的Python代码(第2版) now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.