七套Python库快速提升您项目的代码可维护性

2023-12-29 07:08

本文主要是介绍七套Python库快速提升您项目的代码可维护性,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

当软件项目进入“维护模式”时,原本的代码可读性与编码标准往往很难得到保证。(当然,这些标准在软件项目建立之初就不容易坚持实施。)但必须强调的是,在代码库中保持样式与测试标准的一致性,正是降低维护负担的重要前提。只有这样,我们才能确保未来的开发人员得以快速了解新的情况,并随着时间推移切实保证项目与应用程序的健康状况。

保护项目未来可维护性的一种理想方式,在于利用外部库检查您的代码运行状况。以下是目前开发人员最喜爱的的代码梳理库,它们能够以强制方式执行一致性样式,并确保项目在成熟之后仍具备可接受的测试覆盖率。

检查您的代码样式

PEP 8是一套Python代码样式指南,其为行长度、缩进、多行表达式以及命名约定等内容提供重要的执行规则。当然,您的团队也许拥有自己的样式规则,且其与PEP 8略有不同。

凭借代码样式指南都拥有同样的目标——在代码库中强制实施一致的标准,从而使其更具可读性并降低维护难度。在这方面,以下三套库能够帮助大家高效改善代码质量。

1. Pylint

Pylint 是一套用于检查PEP 8样式违规与常见错误的库。它能够与多种高人气编辑器及IDE良好集成,亦可通过命令行加以运行。

您可以运行pip install pylint命令以进行安装。

要通过命令行使用Pylint,您需要运行 pylint [options] path/to/dir or pylint [options] path/to/module.py。Pylint将向控制台输出关于样式违规以及其他错误警告。

大家也可以利用 pylintrc配置文件自定义Pylint的错误检查。

2. Flake8

Flake8是一款“Python工具,可将PEP 8、Pyflakes(类似于Pylint)、McCabe(代码复杂性检查器)以及其他第三方插件加以结合,用以检查Python代码中的样式与质量。”

要使用Flake8,您需要运行 pip install flake8。而后,运行flake8 [options] path/to/dir or flake8 [options] path/to/module.py 查看相关错误与警告信息。

与Pylint类似,Flake8也允许用户对配置文件的检查内容进行自定义,其中包含非常清晰的文档,例如一些实用的commit hook,用以自动检查开发流程中的代码片段。

Flake8能够集成各类流行编辑器与IDE,但文档当中通常并未提及相关指令。要将Flake8与您喜爱的编辑器或IDE进行集成,请在线搜索相关插件(例如 Flake8 plugin for Sublime Text)。

3. Isort

Isort是一套库,能够按字母顺序对您的导入内容进行排序并将其拆分为适当部分(例如标准库导入、第三方库导入、来自您自有项目的导入等)。这将提升代码可读性并在模块中包含大量导入内容时降低查找难度。

要安装isort,您需要运行 pip install isort,而后使用 isort path/to/module.py命令加以运行。关于更多配置选项,请参阅 说明文档。例如,您可以通过isort.cfg文件配置isort如何处理来自某套库的多行导入代码。

与Falke8及Pylint一样,isort同时提供多款插件以集成各类流行编辑器及IDE。

代码样式外包

需要强调的是,在命令行中手动为需要变更的各个文件进行代码梳理是一项痛苦的工作,大家也可能并不喜欢特定插件在IDE中的运行方式。

此外,您的同事可能更倾向于利用不同的插件或者干脆不配合任何插件使用自己喜爱的编辑器; 或者您自己可能不想投入太多心力进行代码梳理并根据警告内容做出调整。随着时间的推移,这一切都可能令您的共享代码库变得混乱且难以阅读。

在这方面,一大理想解决方案是利用库自动对代码进行重新格式化,从而直接为您传递PEP 8内容。这里我们推荐的三套库都拥有不同级别的自定义能力,亦会以不同的默认方式进行代码格式化。

这些默认方式各有优劣,因此大家可能需要像使用Pylint以及Flake8那样对其进行测试,看看哪些能够提供最有效的自定义选项,又有哪些不可更改的默认值比较符合您的要求。

4. Autopep8

Autopep8 能够自动对您指定的模块内的代码进行格式化。它会进行重新缩进、修复缩进、删除不必要的空格,同时重构常见的比较错误(例如布尔值与None)。感兴趣的朋友可以点击此处查看其文档中的完整更正列表。

要安装Autopep8,您需要运行pip install --upgrade autopep8。要对代码进行重新格式化,需要运行autopep8 --in-place --aggressive --aggressive <filename>。其中的aggressive标记(及其数量)表示您希望在代码样式上为autopep8提供多少控制权空间。您可以点击此处了解关于aggressive选项的更多细节信息。

5. Yapf

Yapf 是另一种代码重新格式化选项,其提供自己的配置选项列表。与autopep8不同,yapf不仅能够解决PEP 8违规问题,同时亦会重新格式化那些并不违反特定PEP 8规则的代码——包括不符合样式一致性或者存在其他可读性问题的部分,从而进一步提升代码可维护性。

要安装yapf,您需要运行 pip install yapf。要对代码进行重新格式化,需要运行 yapf [options] path/to/dir 或者yapf [options] path/to/module.py。您可以点击此处查看自定义选项的完整列表。

6. Black

Black在代码重新格式化领域可谓后起之秀。它与autopep8以及Yapf颇为相似,但又有着自己的特点。重点在于,Black提供的自定义选项非常有限。换言之,其基本思路是用户不应对代码样式做出决定,而应将决定权交给Black。当然,大家也可以查看有限的自定义选项,并将其存储在配置文件当中。

Black要求配合Python 3.6+使用,但亦可对Python 2代码进行格式化。要使用Black,您需要运行 pip install black。要对代码进行格式化,您需要运行: black path/to/dir 或者 black path/to/module.py。

检查测试覆盖率

在编写测试的过程中,大家需要确保其能够对代码库中的新代码进行测试,同时不致降低您的测试覆盖率。尽管测试覆盖率百分比并非衡量测试有效性与充分性的惟一指标,但其无疑是确保项目遵循基本测试标准的重要方法之一。为了衡量测试覆盖率,我们向您推荐Coverage。

7. Coverage

Coverage拥有多个选项,可用于向您报告测试覆盖率,具体包括将结果输出至控制台或HTML页面,并指示哪些行号存在测试覆盖缺失。您可以设置配置文件以自定义Coverage的检查内容,并降低其运行难度。

要安装Coverage,您需要运行pip install coverage。要运行程序并查看其输出结果,需要运行 coverage run [path/to/module.py] [args],而后查看程序的输出结果即可。要获取哪些代码行未被测试覆盖,需要运行 coverage report -m。

持续集成工具

持续集成(简称CI)是您可以运行的一系列流程,用于在代码合并与部署之前自动检查梳理错误并给出测试覆盖率的最小值。目前有多种免费或付费工具能够自动完成上述目标,这里我们就不一一赘述了。不过考虑到持续集成是实现代码可读性与可维护性的重要环节,这里向大家推荐两种一般性持续集成工具:Travis CI 与 Jenkins。

更多Python视频、源码、资料加群683380553免费获取

原文标题:7 Python libraries for more maintainable code,作者:Jeff Triplett

这篇关于七套Python库快速提升您项目的代码可维护性的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/548714

相关文章

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

电脑桌面文件删除了怎么找回来?别急,快速恢复攻略在此

在日常使用电脑的过程中,我们经常会遇到这样的情况:一不小心,桌面上的某个重要文件被删除了。这时,大多数人可能会感到惊慌失措,不知所措。 其实,不必过于担心,因为有很多方法可以帮助我们找回被删除的桌面文件。下面,就让我们一起来了解一下这些恢复桌面文件的方法吧。 一、使用撤销操作 如果我们刚刚删除了桌面上的文件,并且还没有进行其他操作,那么可以尝试使用撤销操作来恢复文件。在键盘上同时按下“C

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

在cscode中通过maven创建java项目

在cscode中创建java项目 可以通过博客完成maven的导入 建立maven项目 使用快捷键 Ctrl + Shift + P 建立一个 Maven 项目 1 Ctrl + Shift + P 打开输入框2 输入 "> java create"3 选择 maven4 选择 No Archetype5 输入 域名6 输入项目名称7 建立一个文件目录存放项目,文件名一般为项目名8 确定

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学