处女座程序员,请喜欢 Black

5. Formatter工具

Formatter工具也有很多种,但是我们几乎没有去考查其它的formatter,就选择了black,只因为它的logo:

The Uncompromising Code Formatter

与其它Formatter工具提供了体贴入微的自定义配置不同,Black坚持不让您做任何自定义(几乎)。这样做是有道理的,允许定制只会让团队陷入到无意义地争辩当中,而风格并无对错,习惯就好。我们常常看到在团队里,一些人为代码风格争论,其实他们反对的并不是某种风格本身,他们只是在反对自己的同事而已。

当然Black还是开了一个小窗口,允许你定义代码行的换行长度,Black的推荐是88字符。有的团队会把这个更改为120字符宽,按照阴谋论的观点,幕后的推手可能是生产带鱼屏的资本力量。

在ppw生成的项目中,我们把black的设置放在pyproject.toml中:

[tool.black]
line-length = 88
include = '\.pyi?$'

另外一个值得一提的工具是isort。它的作用是对代码中的import语句进行格式化,包括排序,将一行里的多个导入拆分成每行一个导入;始终把导入语句置于正式代码之前等等。通过 ppw向导生成的项目,这个工具也开箱即用的:

[tool.isort]
profile = "black"

这里的配置是防止isort与black相冲突。实际上flake8、black和isort都的配置需要精心同步才能避免冲突。一时发生冲突,就会出现这样的情况,被A工具改过的代码,又被B工具改回去,始终无法收敛。

比较遗憾的是,在vscode下没有一个好的工具可以自动移除没有使用的导入。Pycharm是可以做到这一点的。开源的工具中有可以做到这一点的,但是因为容易出错,这里也就不推荐了。

在vscode中,Lint工具可以检查出未使用的导入,然后您需要手动移除。移除未使用的import是必要的,它可以适当加快程序启动速度,降低内存占用,并且避免导入带来的副作用。

在这里插入图片描述

6. pre-commit hooks

我们把pre-commit hooks放在这一章里介绍,是因为高效的编码也必须是正确的编码。有时候我们会觉得国内的公司不需要计划和文档,需求、设计和编码各方之间不需要反复协商和沟通,一个指令下来,就很快得到执行。这被认为是执行力强,是一大体制优势,但这些“执行力”强的公司,却又累得要死。方向不正确,累死又有何益?

pre-commit是一个python包,可以通过pip安装:

$ pip install pre-commit

pre-commit安装后,会在你的项目目录下创建一个.git/hooks目录,里面有一个pre-commit文件。这个文件是一个shell脚本,它会在你执行git commit命令时被调用。pre-commit hooks的作用是在你提交代码之前,对代码进行检查,如果有错误,就会阻止你提交代码,从而保证代码库不被这些错误的、不合规范的代码污染。

如果使用向导生成项目的话,向导已经为您安装了pre-commit hooks,当您运行git commit命令时,就会看到这样的输出:

可以看出,pre-commit

  • 31
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

量化风云

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值