Python 是最优雅、最简洁的编程语言之一,但拥有优美简洁的语法并不等同于编写简洁的代码。开发人员仍然需要学习 Python 最佳实践和设计模式来编写干净的代码。什么是干净代码? C++ 编程语言的发明者 Bjarne Stroustrup 的这句话清楚地解释了干净代码的含义:
“我喜欢我的代码优雅而高效。逻辑应该直截了当,让 bug 难以隐藏,依赖最小化以方便维护,错误处理根据明确的策略完成,性能接近最佳,以免诱使人们使用无原则的优化使代码混乱。干净的代码能做好一件事。”
从这句话中,我们可以挑选出干净代码的一些品质:
干净的代码是重点。每个函数、类或模块都应该做一件事并做好。 干净的代码易于阅读和推理。Grady Booch,面向对象的分析和设计与应用程序的作者:干净的代码读起来就像写得很好的散文。 干净的代码很容易调试。 干净的代码易于维护。也就是说,其他开发人员可以轻松阅读和增强它。 干净的代码是高性能的。
好吧,开发人员可以随心所欲地编写他们的代码,因为没有固定的或约束性的规则来强迫他/她编写干净的代码。然而,糟糕的代码会导致技术债务,从而对公司造成严重后果。因此,这是编写干净代码的警告。
在本文中,我们将研究一些有助于我们在 Python 中编写干净代码的设计模式。让我们在下一节中了解它们。
用 Python 编写干净代码的模式 命名约定: 命名约定是编写干净代码的最有用和最重要的方面之一。在命名变量、函数、类等时,请使用有意义的名称,这些名称可以揭示意图。这意味着我们更喜欢长的描述性名称而不是简短的模棱两可的名称。
下面是一些例子:
使用易于阅读的长描述性名称。这将消除编写不必要的注释的需要,如下所示:
使用描述意图揭示名称。其他开发人员应该能够从名称中找出您的变量存储的内容。简而言之,您的代码应该易于阅读和推理。
避免使用模棱两可的速记。变量应该有一个长的描述性名称,而不是一个容易混淆的短名称。
始终使用相同的词汇。与您的命名约定保持一致。 当其他开发人员处理您的代码时,保持一致的命名约定对于消除混淆非常重要。这适用于命名变量、文件、函数甚至目录结构。
开始在您的编辑器中跟踪代码库问题。 保持 Python 代码库清洁的一个主要组成部分是让工程师可以轻松地跟踪和查看代码本身的问题。在编辑器中跟踪代码库问题允许工程师: 在编辑器中跟踪代码库问题允许工程师: 全面了解技壁垒 查看每个代码库问题的上下文 减少上下文切换 持续解决技术壁垒 您可以使用各种工具来跟踪您的技术债务,但最快速和最简单的入门方法是使用与 Jira、Linear、Asana 和其他项目管理工具集成的VSCode或JetBrains的免费 Stepsize 扩展。
不要使用幻数。幻数是具有特殊硬编码语义的数字,出现在代码中但没有任何意义或解释。通常,这些数字以文字形式出现在我们代码中的多个位置。
与您的函数命名约定保持一致。 从上面的变量可以看出,在命名函数时要遵守命名约定。使用不同的命名约定会使其他开发人员感到困惑。
函数应该做一件事,并且把它做好。编写执行单个任务的简短函数。需要注意的一个很好的经验法则是,如果您的函数名称包含“and”,您可能需要将其拆分为两个函数。
不要使用标志或布尔标志。布尔标志是保存布尔值的变量——真或假。这些标志被传递给一个函数,并由该函数用于确定其行为。
不要添加多余的上下文。这可以通过在使用类时向变量名添加不必要的变量来实现。 在上面的示例中,由于我们已经在 Person 类中,因此无需为每个类变量添加 person_ 前缀。
奖励:模块化您的代码:
为了使您的代码保持组织和可维护性,请将您的逻辑拆分为不同的文件或称为模块的类。Python 中的模块只是一个以扩展名结尾的文件.py。每个模块都应该专注于做一件事并做好。
您可以遵循面向对象的 OOP 原则,例如遵循基本的 OOP 原则,如封装、抽象、继承和多态。
结论 编写干净的代码有很多优点:提高软件质量、代码可维护性和消除技术壁垒。
在本文中,您了解了一般的干净代码以及使用 Python 编程语言编写干净代码的一些模式。但是,这些模式也可以在其他编程语言中复制。
最后,我希望通过阅读这篇文章,你已经对干净代码和编写干净代码的一些有用的模式有了足够的了解。