作者: ChristopherTao翻译:王可汗校对:王雨桐本文约1800字,建议阅读5分钟本文总结了Python代码中经常被忽略的影响代码的运行速度常见问题。随着Python的流行,用户数量也在增加。Python确实相对容易上手,也非常灵活,因此有更多可能的方式来实现一个函数。当有多种方法可以实现一件特定的事情时,这意味着每种方法都有优缺点。在本文中,我收集了6种编写Python代码的典型方法,这些方法可能导致相对较差的性能。一、不导入根模块在使用Python时,我们无法避免的一件事就是导入模块,无论是内置模块还是第三方模块。有时我们可能只需要其中的一个或几个函数或对象。在这种情况下,我们应
1. 应用程序级别代码坏味道1.1. 布尔盲点1.1.1. 由于函数使用布尔值而导致的信息缺失1.1.2. 解决方案是将布尔替换为枚举类型1.2. 组合爆炸1.2.1. 不同的代码使用不同的参数组合来执行同一件事情的产物1.2.2. 解决方案使用泛型1.3. 人为复杂性1.3.1. 简单的架构复杂化1.3.2. 解决方案务必保持软件的简单易懂(KeepItSimple,Stupid,KISS)1.4. 数据泥团1.4.1. 相同的字段同时出现在不同的类和参数列表中时1.4.1.1. 说明系统中缺少类定义1.4.2. 识别并泛化缺失的类可以降低系统的复杂度1.5. 粉饰注释1.5.1. 注释中用
1. 应用程序级别代码坏味道1.1. 布尔盲点1.1.1. 由于函数使用布尔值而导致的信息缺失1.1.2. 解决方案是将布尔替换为枚举类型1.2. 组合爆炸1.2.1. 不同的代码使用不同的参数组合来执行同一件事情的产物1.2.2. 解决方案使用泛型1.3. 人为复杂性1.3.1. 简单的架构复杂化1.3.2. 解决方案务必保持软件的简单易懂(KeepItSimple,Stupid,KISS)1.4. 数据泥团1.4.1. 相同的字段同时出现在不同的类和参数列表中时1.4.1.1. 说明系统中缺少类定义1.4.2. 识别并泛化缺失的类可以降低系统的复杂度1.5. 粉饰注释1.5.1. 注释中用
1、神秘命名 模块、类、函数、变量等的命名是编程中最难的两件事之一,正因为如此,改名可能是最常用的重构手法 对应的重构手法有:改变函数声明、变量改名、字段改名2、重复代码 顾名思义,就是在多处看到相同的代码结构 对应的重构手法有:移动语句、提炼函数3、过长的函数 确保函数内代码处在同一层抽象级,无须担心进程内的函数开销,提倡小函数4、过长参数列表 一个函数的参数一旦出现3个及以上,就需要注意,不易理解、使用和维护 对应的重构手法有:以查询取代参数、保持对象完整、引入参数对象、移除标记参数、函数组合成类5、全局数据 全局数据最显而易见的形式就是全局变量,他j可以给函数增加状态,这
1、神秘命名 模块、类、函数、变量等的命名是编程中最难的两件事之一,正因为如此,改名可能是最常用的重构手法 对应的重构手法有:改变函数声明、变量改名、字段改名2、重复代码 顾名思义,就是在多处看到相同的代码结构 对应的重构手法有:移动语句、提炼函数3、过长的函数 确保函数内代码处在同一层抽象级,无须担心进程内的函数开销,提倡小函数4、过长参数列表 一个函数的参数一旦出现3个及以上,就需要注意,不易理解、使用和维护 对应的重构手法有:以查询取代参数、保持对象完整、引入参数对象、移除标记参数、函数组合成类5、全局数据 全局数据最显而易见的形式就是全局变量,他j可以给函数增加状态,这
1、可变数据 数据更新导致,而另外一处期待不同的值 对应的重构手法:封装变量、拆分变量、移动语句、提炼函数、将查询函数和修改函数分离、移除设值函数、查询取代派生变量、函数组合成类、函数组合成变换、引用对象改为值对象 欠理解2、发散式变化 每次只关心一个上下文(一旦产生修改,跳到系统某个点,只在该处做修改) 对应的重构手法:拆分阶段、搬移函数、提炼函数、提炼类3、霰弹式修改 类似于发散式变化,但是又恰恰相反(没明白书里这话是什么意思) 对应重构手法:搬移函数、搬移字段、函数组合成类、函数组合成变换、拆分阶段、内联函数、内联类4、依恋情结 最大化区域内部交互、最小化跨区域交互,也可
1、可变数据 数据更新导致,而另外一处期待不同的值 对应的重构手法:封装变量、拆分变量、移动语句、提炼函数、将查询函数和修改函数分离、移除设值函数、查询取代派生变量、函数组合成类、函数组合成变换、引用对象改为值对象 欠理解2、发散式变化 每次只关心一个上下文(一旦产生修改,跳到系统某个点,只在该处做修改) 对应的重构手法:拆分阶段、搬移函数、提炼函数、提炼类3、霰弹式修改 类似于发散式变化,但是又恰恰相反(没明白书里这话是什么意思) 对应重构手法:搬移函数、搬移字段、函数组合成类、函数组合成变换、拆分阶段、内联函数、内联类4、依恋情结 最大化区域内部交互、最小化跨区域交互,也可
环境概述操作系统:WIN2019ORACLE版本:19.17.0.0.0故障现象客户反馈数据库经常用着用着就连不上,通过查看alert日志发现是数据库实例崩溃。具体信息如下2023-02-09T03:04:36.619773+08:00ErrorsinfileD:\APP\ADMINISTRATOR\diag\rdbms\his\his\trace\his_smon_9116.trc(incident=114022):ORA-00600:internalerrorcode,arguments:[13013],[5001],[423],[12633689],[5],[12633689],[17]
环境概述操作系统:WIN2019ORACLE版本:19.17.0.0.0故障现象客户反馈数据库经常用着用着就连不上,通过查看alert日志发现是数据库实例崩溃。具体信息如下2023-02-09T03:04:36.619773+08:00ErrorsinfileD:\APP\ADMINISTRATOR\diag\rdbms\his\his\trace\his_smon_9116.trc(incident=114022):ORA-00600:internalerrorcode,arguments:[13013],[5001],[423],[12633689],[5],[12633689],[17]
1. 应用程序级别代码坏味道1.1. 布尔盲点1.1.1. 由于函数使用布尔值而导致的信息缺失1.1.2. 解决方案是将布尔替换为枚举类型1.2. 组合爆炸1.2.1. 不同的代码使用不同的参数组合来执行同一件事情的产物1.2.2. 解决方案使用泛型1.3. 人为复杂性1.3.1. 简单的架构复杂化1.3.2. 解决方案务必保持软件的简单易懂(KeepItSimple,Stupid,KISS)1.4. 数据泥团1.4.1. 相同的字段同时出现在不同的类和参数列表中时1.4.1.1. 说明系统中缺少类定义1.4.2. 识别并泛化缺失的类可以降低系统的复杂度1.5. 粉饰注释1.5.1. 注释中用