随着软件项目进入“维护模式”,对可读性和编码标准的要求很容易落空(甚至从一开始就没有建立过那些标准)。然而,在代码库中保持一致的代码风格和测试标准能够显著减轻维护的压力,也能确保新的开发者能够快速了解项目的情况,同时能更好地全程保持应用程序的质量。

使用外部库来检查代码的质量不失为保护项目未来可维护性的一个好方法。以下会推荐一些我们最喜爱的检查代码(包括检查 PEP 8 和其它代码风格错误)的库,用它们来强制保持代码风格一致,并确保在项目成熟时有一个可接受的测试覆盖率。

检查你的代码风格

PEP 8 是 Python 代码风格规范,它规定了类似行长度、缩进、多行表达式、变量命名约定等内容。尽管你的团队自身可能也会有稍微不同于 PEP 8 的代码风格规范,但任何代码风格规范的目标都是在代码库中强制实施一致的标准,使代码的可读性更强、更易于维护。下面三个库就可以用来帮助你美化代码。

1、 Pylint

Pylint 是一个检查违反 PEP 8 规范和常见错误的库。它在一些流行的编辑器和 IDE 中都有集成,也可以单独从命令行运行。

执行 pip install pylint 安装 Pylint 。然后运行 pylint [options] path/to/dir 或者 pylint [options] path/to/module.py 就可以在命令行中使用 Pylint,它会向控制台输出代码中违反规范和出现错误的地方。

你还可以使用 pylintrc 配置文件来自定义 Pylint 对哪些代码错误进行检查。

2、 Flake8

Flake8 是“将 PEP 8、Pyflakes(类似 Pylint)、McCabe(代码复杂性检查器)和第三方插件整合到一起,以检查 Python 代码风格和质量的一个 Python 工具”。

执行 pip install flake8 安装 flake8 ,然后执行 flake8 [options] path/to/dir 或者 flake8 [options] path/to/module.py 可以查看报出的错误和警告。

和 Pylint 类似,Flake8 允许通过配置文件来自定义检查的内容。它有非常清晰的文档,包括一些有用的提交钩子,可以将自动检查代码纳入到开发工作流程之中。

Flake8 也可以集成到一些流行的编辑器和 IDE 当中,但在文档中并没有详细说明。要将 Flake8 集成到喜欢的编辑器或 IDE 中,可以搜索插件(例如 Sublime Text 的 Flake8 插件)。

3、 Isort

Isort 这个库能将你在项目中导入的库按字母顺序排序,并将其正确划分为不同部分(例如标准库、第三方库、自建的库等)。这样提高了代码的可读性,并且可以在导入的库较多的时候轻松找到各个库。

执行 pip install isort 安装 isort,然后执行 isort path/to/module.py 就可以运行了。文档中还提供了更多的配置项,例如通过配置 .isort.cfg 文件来决定 isort 如何处理一个库的多行导入。

和 Flake8、Pylint 一样,isort 也提供了将其与流行的编辑器和 IDE 集成的插件。

分享你的代码风格 每次文件发生变动之后都用命令行手动检查代码是一件痛苦的事,你可能也不太喜欢通过运行 IDE 中某个插件来实现这个功能。同样地,你的同事可能会用不同的代码检查方式,也许他们的编辑器中也没有那种插件,甚至你自己可能也不会严格检查代码和按照警告来更正代码。总之,你分享出来的代码库将会逐渐地变得混乱且难以阅读。

一个很好的解决方案是使用一个库,自动将代码按照 PEP 8 规范进行格式化。我们推荐的三个库都有不同的自定义级别来控制如何格式化代码。其中有一些设置较为特殊,例如 Pylint 和 Flake8 ,你需要先行测试,看看是否有你无法忍受但又不能修改的默认配置。

4、 Autopep8

Autopep8 可以自动格式化指定的模块中的代码,包括重新缩进行、修复缩进、删除多余的空格,并重构常见的比较错误(例如布尔值和 None 值)。你可以查看文档中完整的更正列表。

运行 pip install --upgrade autopep8 安装 Autopep8。然后执行 autopep8 --in-place --aggressive --aggressive 就可以重新格式化你的代码。aggressive 选项的数量表示 Auotopep8 在代码风格控制上有多少控制权。在这里可以详细了解 aggressive 选项。

5、 Yapf

Yapf 是另一种有自己的配置项列表的重新格式化代码的工具。它与 Autopep8 的不同之处在于它不仅会指出代码中违反 PEP 8 规范的地方,还会对没有违反 PEP 8 但代码风格不一致的地方重新格式化,旨在令代码的可读性更强。

执行 pip install yapf 安装 Yapf,然后执行 yapf [options] path/to/dir 或 yapf [options] path/to/module.py 可以对代码重新格式化。定制选项的完整列表在这里。

python代码大全p-Python5种代码维护工具相关推荐

  1. c 语言整人代码大全,C 语言整人代码大全.doc

    C 语言整人代码大全 C 语言整人代码大全 WScript.Echo("嘿,谢谢你打开我哦,我等你很久 拉!"&TSName) WScript.Echo("你是可 ...

  2. 用 Python画圣诞树的三种代码示例

    大家好,我是明哥. 马上就是圣诞节了,先提前祝大家圣诞快乐! 今天来给大家分享一波如何使用 Python 来画一颗圣诞节树,包含多种版本,从平民版到豪华版,像极了一个程度员从入门到高级秃头程序员的过程 ...

  3. rust 飞天指令_腐蚀RUST代码大全 腐蚀RUST指令代码一览

    腐蚀(RUST)是一款开放世界生存游戏,在游戏中玩家可以使用指令代码来简便自己的游戏,下面就来分享一下腐蚀RUST指令代码大全. 腐蚀RUST指令代码一览 基本指令 (以下在聊天框内输入) /msg ...

  4. 万圣节html代码大全,方舟生存进化万圣节活动代码大全 万圣节活动物品代码汇总_材料_逗游网...

    方舟生存进化万圣节活动物品代码大全,本作会定期举办活动,在活动中会出现独有的道具及物品,一旦玩家错过活动日期后只能通过代码才能够调出来,下面就为大家带来万圣节的活动物品代码汇总,供各位玩家查阅. 万圣 ...

  5. 智能家居个人服务器代码大全,智能家居控制系统代码简介—了解一下智能家居控制系统代码...

    随着当今社会经济和科技的不断发展与进步,人们的生活水平的不断提高,越来越多的家庭开始注重生活质量的改善了.要想提高生活质量,首先就应该需要改善家里的生活用品,像家用电器.那么比之前使用的普通家用电器先 ...

  6. 运行 Java、Python、Go 等 25 种代码后,发现性能最强的竟然是它!

    本文通过一道程序面试题,使用不同的编程语言来实现,检验每种语言的简单版本与优化后版本的运行速度分别是多少,横向对比 Python.Go.C++.C.Rust 等编程语言的性能, 作者 | Ben Ho ...

  7. Python 人工智能大全之3行代码创建一个 AI 论文机器人

    Python 是一种广泛使用的编程语言,易于学习且用途广泛.它可用于为各种任务创建程序,例如数据分析.Web 开发和人工智能 (AI) 编写.在本文中,我们将向您展示可用于创建 AI 论文作者的三行 ...

  8. 程序编程代码大全_CNC加工中心程序代码大全

    手工编程是指编程的各个阶段均由人工完成.利用一般的计算工具,通过各种三角函数计算方式,人工进行刀具轨迹的运算,并进行指令编制. 这种方式比较简单,很容易掌握,适应性较大. 下面我们了解一下数控编程步骤 ...

  9. php网页脚本代码大全,PHP编写脚本代码的详细教程

    下面是小编给大家分享的一篇PHP编写脚本代码的详细教程,感兴趣的朋友跟小编一起来了解一下吧! 看看下面的这段PHP脚本,它用来在输入的用户名及口令正确时授权访问一个Web页面: 复制代码 代码如下: ...

  10. 【代码大全】——组织直线型代码

    文章目录 组织直线型代码 必须有明确顺序的语句 顺序无关的语句 核对表 Key Points 组织直线型代码 本章从以数据为中心的编程观点转到以语句为中心的观点上. 即按先后顺序放置语句和语句块. 尽 ...

最新文章

  1. 求求你,不要再使用!=null判空了!
  2. JS Array.reduce 对象属性累加
  3. JavaScript 5/30:Flex Panel Gallery即FLEX布局的图片库
  4. 上线随想之2011-03-26
  5. 计算机三级数据库er图试题里,2019年3月计算机三级数据库考试基础试题及答案006...
  6. 手机快充功能到底是充电头的功劳还是线的功劳?
  7. 高通qusb bulk驱动_1999元!Redmi新机发布:首发高通全新SoC
  8. kaldi GMM模型解码指令 gmm-latgen-faster详解
  9. Linux strace命令详解
  10. 第二章 关键数据结构
  11. C# dataGridView控件 左上角加string
  12. mysql分组函数_mysql分组函数
  13. Word页眉本来有但不可见 前后相连时
  14. golang 结构体使用chan
  15. python生成exe文件
  16. spring开发常用的
  17. html轮播图水平传送带,12款 jquery轮播插件
  18. 4. 【gRPC系列学习】Resolver原理详解
  19. Dynamics 365 V9 on-premises NavigaiteTo API无效的变通方式
  20. 大学物理 期末考试公式集锦

热门文章

  1. soapui + groovy 接口自动化测试 第八章
  2. 使用require.js和backbone实现简单单页应用实践
  3. 【每日邮报】利物浦对阵阿森纳能走出牢狱要谢天谢地谢Peter
  4. MVC模式和Maven项目构建
  5. linux下的c socket编程(4)--server端的继续研究
  6. Python easyGUI 文件浏览 显示文件内容
  7. Mongodb常用增删改查语法
  8. Codeforces Round #171 (Div. 2)
  9. jQuery Validate 表单验证插件----自定义校验结果样式
  10. Objective-C block