【Python】什么才是好代码

文章介绍了静态代码分析工具在评估Python代码质量中的作用,如Pylint、Pyflakes、McCabe等,用于检测编码标准、复杂度和错误。同时,讨论了代码的坏味道,包括类层面和方法层面的问题,如上帝对象、长方法和圈复杂度,并强调了重构的重要性。
摘要由CSDN通过智能技术生成

背景

静态代码分析工具能够提炼出丰富的代码静态属性信息,这使得程序员可以对代码的复杂性、可修改性和可读性有进一步的了解。

有哪些静态分析工具呢

度量Python代码的静态属性

  • 是否符合编码标准,如 PEP8
  • 代码复杂度度量,如 McCabe 度量
  • 代码中的错误,如语法错误、缩进问题、缺少相关导入包、变量覆盖以及其它问题
  • 代码的逻辑问题

度量Python的生态系统

  • Pylint:Pylint 是Python 代码的一个静态检查工具,它能够检测一系列的代码错
    误、代码坏味道和格式错误。Pylint 使用的编码格式类似于 PEP-8。它的最新版本还提
    供代码复杂度的相关统计数据,并能打印相应报告。不过在检查之前,Pylint 需要先执行
    代码。具体可以参考 http:/ /pylint.orgo
  • Pyflakes:Pyflakes 相对于Pylint 而言出现的时间较晚,不同于 Pylint 的是,它不
    需要在检查之前执行代码来获取代码中的错误。Pytfakes 不检查代码的格式错误,只检
    查逻辑错误。具体可以参考 http://launchpad.net/pyflakes。
  • MeCabe:它是一个脚本,根据 McCabe 指标检查代码复杂性并打印报告
    具体可以参考 https://pypi.python.org/ pyp1/ mccabe。
  • Pycodestyle: Pycodestyle 是一个按照 PEP-8 的部分内容检查 Python 代码的一个
    工具。这个工具之前叫作PEP-8,具体可以参考 http://github.com/PyCQA/pycodestyle。
  • Flake8:Flake8封装了Pyflakes、 MeCabe 和Pycodestyle 工具,它可以执行这:
    个工具提供的检查。具体可以参考 https://gitlab.com/pycga/flake8/。

代码的坏味道

代码的坏味道指代码中深层问题的表面症状,它通常暗示着设计上的问题,这可能会导致未来的错误或者对特定代码段的开发产生负面影响。代码坏味道本身并不是错误,但是它们暗示着代码中采用的问题解决方法是不正确的,这应该通过重构代码来解决,一些常见的代码坏味道如下。

在类层面上

  • 上帝对象(god object):一种试图做很多事情的对象。换言之,这种对象没有任何的内聚力。
  • 常量类 (constant class):一种只有常量集合的类,而常量集合在其他地方被使用。事实上,该常量在理想状态下不应该属于这个类。
  • 拒绝遗赠 (refused buquest):一种不符合基类使用原则的类,它打破了继承的替
    代原则(所有引用基类的地方必须能透明地使用其子类的对象)。
  • 吃白食 (freeloader):一种有很少功能的类,几乎不做什么事情,有很少的属性。
  • 特征妒忌 (fcature eavy):一种过分依赖其他类方法的类,也就是有高男合性。

在方法层面上

  • 长方法 (long method):太大和太复杂的方法。
  • 参数蠕变 ( parameter crecp):方法中有过多的参数。这会导致方法的调用和测试变得困难。
  • 圈复杂度 (cydomatic complexity):方法中有过多的分支和循环,以至于代码逻辑难以理解,而且容易导致不易察觉的缺陷。这样的方法应该被重构分解成多个方法,或者重新构思逻辑以避免过多的分支。
  • 标识符过长或过短 (ovedly long or short identifier) :函数使用了过长或过短的变量名以至于难以看出该变量的含义,函数的名字也是如此。代码坏味道的一个相关" antipattern,是设计坏味道,这是系统设计中的表面症状表明在架构中存在较深层次的问题。

结语

现在是下午两点,上班时间到,本文送你我的关怀:送你如意, 把烦恼打败;送你快乐,把忧伤击倒;送你轻松,把忙碌扫除;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

会振刀的程序员

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

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

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

打赏作者

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

抵扣说明:

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

余额充值