【Python】什么才是好代码

简介: 【Python】什么才是好代码

背景


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


有哪些静态分析工具呢


度量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,是设计坏味道,这是系统设计中的表面症状表明在架构中存在较深层次的问题。

相关文章
|
3月前
|
存储 算法 调度
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
204 26
|
3月前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
372 1
|
3月前
|
机器学习/深度学习 算法 调度
基于多动作深度强化学习的柔性车间调度研究(Python代码实现)
基于多动作深度强化学习的柔性车间调度研究(Python代码实现)
207 1
|
2月前
|
测试技术 Python
Python装饰器:为你的代码施展“魔法”
Python装饰器:为你的代码施展“魔法”
261 100
|
2月前
|
开发者 Python
Python列表推导式:一行代码的艺术与力量
Python列表推导式:一行代码的艺术与力量
422 95
|
3月前
|
Python
Python的简洁之道:5个让代码更优雅的技巧
Python的简洁之道:5个让代码更优雅的技巧
264 104
|
3月前
|
开发者 Python
Python神技:用列表推导式让你的代码更优雅
Python神技:用列表推导式让你的代码更优雅
465 99
|
2月前
|
缓存 Python
Python装饰器:为你的代码施展“魔法
Python装饰器:为你的代码施展“魔法
157 88
|
3月前
|
IDE 开发工具 开发者
Python类型注解:提升代码可读性与健壮性
Python类型注解:提升代码可读性与健壮性
285 102
|
2月前
|
监控 机器人 编译器
如何将python代码打包成exe文件---PyInstaller打包之神
PyInstaller可将Python程序打包为独立可执行文件,无需用户安装Python环境。它自动分析代码依赖,整合解释器、库及资源,支持一键生成exe,方便分发。使用pip安装后,通过简单命令即可完成打包,适合各类项目部署。

推荐镜像

更多