首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
第4章 选择易懂的名称
4.1 命名风格
4.2 PEP 8 的命名风格
4.3 适当的名称长度
4.3.1 太短的名称
4.3.2 太长的名称
4.4 起易于搜索的名称
4.5 避免笑话、双关语和需要文化背景才能理解的词汇
4.6 不要覆盖内置名称
4.7 史上最差的变量名
第5章 揪出代码的坏味道
5.1 重复的代码
5.2 魔数
5.3 注释掉的代码和死代码
5.4 打印调试
5.5 带有数字后缀的变量
5.6 本该是函数或者模块的类
5.7 嵌套列表解析式
5.8 空的except块和糟糕的错误信息
5.9 代码坏味道的谬误
5.9.1 谬误:函数应该仅在末尾处有一个return语句
5.9.2 谬误:函数最多只能有一个try语句
5.9.3 谬误:使用flag参数不好
5.9.4 谬误:全局变量不好
5.9.5 谬误:注释是不必要的
第6章 编写Python 风格的代码
6.1 Python 之禅
6.2 学着喜欢强制缩进
6.3 使用timeit模块衡量性能
6.4 常被误用的语法
6.4.1 使用enumerate()而不是range()
6.4.2 使用with 语句代替open()和close()
6.4.3 用is 跟None 做比较而不用==
6.5 格式化字符串
6.5.1 如果字符串有很多反斜杠,请使用原始字符串
6.5.2 使用f-string 格式化字符串
6.6 制作列表的浅副本
6.7 以Python 风格使用字典
6.7.1 在字典中使用get()和setdefault()
6.7.2 使用collections.defaultdict()设置默认值
6.7.3 使用字典代替switch 语句
6.8 条件表达式:Python“丑陋”的三元运算符
6.9 处理变量的值
6.9.1 链式赋值和比较运算符
6.9.2 验证变量是否为多个值中的一个
当前位置:
首页>>
技术小册>>
Python编程轻松进阶(二)
小册名称:Python编程轻松进阶(二)
### 第5章 揪出代码的坏味道 在编程的世界里,随着项目的逐步推进和代码的日益增多,我们常常会不经意间引入一些“坏味道”的代码。这些代码不仅影响程序的可读性、可维护性,还可能成为未来功能扩展或错误修复的绊脚石。本章将深入探讨Python编程中常见的几种代码坏味道,帮助读者识别并清除它们,让代码更加清爽、高效。 #### 5.1 重复的代码(Duplicated Code) **症状描述**:在项目的不同部分发现几乎完全相同或仅有微小差异的代码段。这种重复不仅增加了代码的体积,还使得修改时需要在多个地方同步进行,容易遗漏,增加出错风险。 **解决方案**: - **函数抽象**:将重复的代码段抽象成函数或方法,通过参数传递来处理差异部分。 - **类封装**:如果重复代码与特定的数据结构或行为紧密相关,考虑使用类来封装这些代码。 - **设计模式**:利用设计模式如工厂模式、策略模式等,减少代码重复,提高灵活性。 #### 5.2 过长的函数(Long Method/Function) **症状描述**:单个函数或方法过长,包含多个逻辑分支或复杂的计算过程,难以理解和维护。 **解决方案**: - **拆分函数**:根据功能或逻辑将大函数拆分成多个小函数,每个函数负责单一的、明确的任务。 - **引入中间变量**:使用有意义的中间变量来简化复杂表达式,使代码更易读。 - **责任分配**:重新评估函数的职责,确保每个函数都专注于一个清晰的任务。 #### 5.3 过多的参数(Long Parameter List) **症状描述**:函数或方法接收过多参数,尤其是当这些参数之间缺乏明显关联时,会使函数难以理解和使用。 **解决方案**: - **使用对象**:将多个相关参数封装到一个对象中,通过传递对象来传递多个参数。 - **默认参数和参数打包**:利用Python的默认参数和*args/**kwargs特性,减少必要参数的数量,同时提供灵活性。 - **重构函数**:重新考虑函数的设计,看是否可以通过拆分或合并功能来减少参数数量。 #### 5.4 过度耦合(Excessive Coupling) **症状描述**:模块、类或函数之间依赖关系过于紧密,一个部分的改变可能影响到多个其他部分,导致系统难以维护和扩展。 **解决方案**: - **依赖注入**:使用依赖注入技术降低类之间的耦合度,使类更容易被测试和维护。 - **接口隔离**:定义清晰的接口,确保类之间的通信通过接口进行,减少直接依赖。 - **模块化**:将系统划分为更小的、职责单一的模块,减少模块间的交互。 #### 5.5 魔法数字和字符串(Magic Numbers and Strings) **症状描述**:在代码中直接出现没有明确含义的数字或字符串字面量,这些值对于阅读代码的人来说是“魔法”的,难以理解其背后的含义。 **解决方案**: - **命名常量**:将魔法数字或字符串替换为具有描述性名称的常量,提高代码的可读性。 - **配置文件**:将可变的配置信息(如数据库连接参数)移至配置文件,减少硬编码。 #### 5.6 过度使用全局变量(Excessive Global Variables) **症状描述**:函数或方法依赖外部的全局变量来获取数据或状态,导致函数的行为难以预测,增加了测试和维护的难度。 **解决方案**: - **参数传递**:通过参数将必要的数据传递给函数或方法,减少全局变量的使用。 - **类属性**:如果全局变量与某个类紧密相关,考虑将其改为类的静态属性或实例属性。 - **封装**:使用封装技术隐藏全局变量的细节,通过公共接口来访问或修改它们。 #### 5.7 错误的注释(Inaccurate Comments) **症状描述**:注释与代码不一致,或注释过于冗余,未能提供有价值的信息,反而增加了阅读负担。 **解决方案**: - **自文档化代码**:编写清晰、简洁、易于理解的代码,减少不必要的注释。 - **及时更新注释**:当代码发生变化时,确保相应的注释也得到更新。 - **有用注释**:仅在代码无法自解释其意图时才添加注释,且注释应简洁明了,直接指向关键点。 #### 5.8 滥用控制结构(Misused Control Structures) **症状描述**:过度使用复杂的控制结构(如多层嵌套的条件语句、循环中的循环等),导致代码难以理解和维护。 **解决方案**: - **简化逻辑**:重新设计算法或数据结构,以减少控制结构的复杂性。 - **早返回**:在条件语句中尽早使用`return`语句,减少嵌套深度。 - **函数提取**:将复杂的逻辑块提取为独立的函数,减少单个函数内的复杂度。 #### 结语 揪出并清除代码中的坏味道,是提升代码质量、促进项目可持续发展的关键步骤。通过识别并应用上述解决策略,我们可以让Python代码更加优雅、健壮和易于维护。记住,良好的编程习惯始于对代码质量的持续关注与改进。希望本章的内容能为你在Python编程进阶之路上提供有益的指导和帮助。
上一篇:
4.7 史上最差的变量名
下一篇:
5.1 重复的代码
该分类下的相关小册推荐:
Python甚础Django与爬虫
Python合辑8-变量和运算符
Python面试指南
Python合辑9-判断和循环
Python高并发编程与实战
Python机器学习实战
Python合辑3-字符串用法深度总结
Python与办公-玩转Excel
Python爬虫入门与实战开发(下)
Python合辑2-字符串常用方法
Python编程轻松进阶(四)
Python自动化办公实战