当前位置: 首页 > 科技观察

使Python代码更易于维护的七种武器

时间:2023-03-13 14:29:41 科技观察

检查您的代码质量并通过这些外部库使其更易于维护。可读性很重要。—TheZenofPython,TimPeters随着软件项目进入“维护模式”,对可读性和编码标准的需求很容易落空(即使这些标准最初并未建立)。但是,在代码库中保持一致的代码风格和测试标准,可以显着降低维护压力,也可以保证新开发人员能够快速了解??项目的情况,同时更好地保持应用程序的全过程质量。使用外部库检查代码质量是保护项目未来可维护性的好方法。下面是我们最喜欢的一些用于检查代码(包括检查PEP8和其他代码风格错误)的库,以加强代码风格的一致性,并确保随着项目的成熟而达到可接受的测试覆盖率。检查您的编码风格PEP8是一种Python编码风格规范,它指定了行长度、缩进、多行表达式、变量命名约定等内容。尽管您的团队可能有自己的编码风格规范,与PEP8略有不同,但任何编码风格规范的目标都是在代码库中强制执行一致的标准,使代码更具可读性和更易于维护。下面三个库可以用来帮助你美化你的代码。1.PylintPylint是一个检查违反PEP8规范和常见错误的库。它集成了一些流行的编辑器和IDE,也可以独立于命令行运行。执行pipinstallpylint安装Pylint。然后在命令行运行pylint[options]path/to/dir或者pylint[options]path/to/module.py来使用Pylint,它会向控制台输出代码违规和错误。您还可以使用pylintrc配置文件来自定义Pylint检查哪些代码错误。2、Flake8Flake8是“一个集成PEP8、Pyflakes(类似Pylint)、McCabe(代码复杂度检查器)和第三方插件来检查Python代码风格和质量的Python工具”。执行pipinstallflake8安装flake8,然后执行flake8[options]path/to/dir或flake8[options]path/to/module.py查看报错和警告。与Pylint类似,Flake8允许通过配置文件自定义要检查的内容。它有非常清晰的文档,并包含一些有用的提交挂钩,可将自动代码审查纳入开发工作流程。Flake8也可以集成到一些流行的编辑器和IDE中,但在文档中没有详细说明。要将Flake8集成到您喜欢的编辑器或IDE中,您可以搜索插件(例如用于SublimeText的Flake8插件)。3.IsortIsort这个库可以把你在项目中导入的库按字母顺序排序,并正确的分成不同的部分(比如标准库、第三方库、自建库等)。这样提高了代码的可读性,在导入库较多的情况下也能轻松找到各个库。执行pipinstallisort安装isort,然后执行isortpath/to/module.py运行。文档还提供了更多配置项,例如isort如何通过配置.isort.cfg文件来处理库的多行导入。与Flake8和Pylint一样,isort也提供插件以将其与流行的编辑器和IDE集成。分享你的代码风格每次文件变化都用命令行手动检查代码是一件很痛苦的事情,你可能不喜欢在IDE中运行一个插件来实现这个功能。同样,您的同事可能会使用不同的代码检查,也许他们的编辑器中没有该插件,您甚至可能不会严格检查您的代码并按照警告进行更正。简而言之,您共享的代码库将逐渐变得杂乱无章且难以阅读。一个好的解决方案是使用根据PEP8规范自动格式化代码的库。我们推荐的三个库都具有不同级别的自定义来控制代码的格式化方式。其中有些设置比较特殊,比如Pylint和Flake8,需要先测试一下,看看有没有默认的配置,你受不了也不能修改。4.Autopep8Autopep8可以自动格式化指定模块中的代码,包括重新缩进行、修复缩进、去除冗余空格、重构常见的比较错误(如布尔值和无值)。您可以在文档中查看完整的更正列表。运行pipinstall--upgradeautopep8安装Autopep8。然后执行autopep8--in-place--aggressive--aggressive重新格式化您的代码。激进选项的数量表示Autotopep8对代码样式控制的控制程度。在此处阅读有关激进选项的更多信息。5.YapfYapf是另一个代码重新格式化工具,它有自己的配置项列表。它与Autopep8的区别在于,它不仅会指出代码违反PEP8规范的地方,还会对没有违反PEP8但代码风格不一致的地方进行重新格式化,旨在使代码更具可读性。执行pipinstallyapf安装Yapf,然后执行yapf[options]path/to/dir或yapf[options]path/to/module.py重新格式化代码。自定义选项的完整列表在这里。6.BlackBlack是代码检查工具中比较新的一个。它类似于Autopep8和Yapf,但没有那么多自定义选项,因此限制更多。这样做的好处是你不需要决定使用什么代码风格,只需要让Black为你做决定。您可以在此处阅读有关Black的有限自定义选项以及如何在配置文件中设置它们的信息。Black依赖于Python3.6+,但它可以格式化用Python2编写的代码。执行pipinstallblack安装Black,然后执行blackpath/to/dir或blackpath/to/module.py以使用Black优化您的代码。检查您的测试覆盖率如果您正在编写测试,您需要确保提交到代码库的新代码经过测试并且不会降低测试覆盖率。虽然测试覆盖率不是测试有效性和充分性的唯一衡量标准,但它是确保项目遵循基本测试标准的一种方法。对于计算测试覆盖率,我们建议使用Coverage库。7.CoverageCoverage有几种显示测试覆盖率的方式,包括将结果输出到控制台或HTML页面,并指出具体哪些地方没有被覆盖。您可以通过配置文件自定义Coverage检测的内容,让您使用起来更加方便。执行pipinstallcoverage以安装Converage。然后执行coverage[path/to/module.py][args]运行程序并查看输出。如果想查看哪些代码行没有被覆盖,执行coveragereport-m即可。持续集成持续集成(CI)是在合并和部署代码之前自动检查代码样式错误和最小测试覆盖率的过程。可以使用许多免费或付费工具来执行这项工作。具体过程本文不赘述,但CI过程是让代码更具可读性和可维护性的重要一步。这部分可以参考TravisCI和Jenkins。这些只是用于检查Python代码的各种工具中的一小部分。如果您还有其他喜欢的工具,请随时在评论中分享。