项目优化经验

发布时间 2023-04-27 09:35:31作者: 挖洞404

1、基础三件套

(1)写文档

(2)编辑注释  包括对方法或函数的使用与返回声明

(3)命名风格统一与适用

2、定义类和函数模块

(1)复用性

(2)项目层次性,避免代码在同一处,造成臃肿

(3)接口性开发,方便以数据角度考虑功能实现和安全处理,也方便团队合作

(4)类方便数据管理

3、定义方法

形式上分类

(1)抽出复用部分定义为方法

操作对象是不可变类型,或者同一对象

操作对象是不同对象,但是属于同一类或者关联。在调用方法前简单处理,通过形参接收后无区别

操作对象是不同对象,有较多差异,但也有共同功能代码。接收后,通过条件控制,分别进行处理,然后执行共同部分

(2)功能明确、代码量大的部分抽出定义为方法

目的是使每个方法中的业务流程清晰明确,可以包含相对少量的业务代码,而实现相对复杂的功能的代码则放到方法中。

需要关心的是该业务方法的输入与输出,而具体实现并不那么重要

4、循环的利用

如果多行代码调用的方法相同,只是参数不同,或者都是同一属性赋值,那么可以考虑使用循环进行迭代。

将值抽取保存到list中,循环处理。

5、采用进制计算、状态量控制,减少迭代方法的声明和使用

6、lambda替代单一语句的方法或函数

7、变量处理

(1)方法中的变量尽量声明为self类型

(2)尽量统一为str类型,如果需要其他类型,可以在使用时转换

(3)方法中使用完变量,可以考虑将其初始化为None,以节约内存

(4)使用is...else在一行代码进行赋值

(5)适用None进行赋值,表示未赋具体值的情况,与空字符串、0、False区分

(6)对于不确定个数的、场景类似的,考虑采用list存储,而非直接的变量,以减少命名空间的占用和方便调用

(7)尽量避免高频创建大对象,考虑进行复用。

8、with open

9、if判断

(1)合并条件判断,除了if可以多条件,其他elif尽量单条件判断

避免if ... and ... elif ... and ...的声明,而是if ... and ... else ...更好。

(2)结合实际,灵活应用not(or)、and与not(and)、or,主要考虑理解的便利

(3)嵌套由于elif并列

大的条件判断内包含小的条件判断,比多个条件判断并列更好,即if嵌套由于elif并列,即优于执行,也方便注释

(4)if并列由于if嵌套

if...if...优于if...elif,减轻嵌套层次,方便阅读。顺序执行,类似于接口开发理念,上一步的数据到下一步的数据,逻辑更清晰。

(5)return关键字

如果条件符合或不符合,使用return直接返回,而不一定必须用最后的返回语句。这样操作,逻辑清晰

10、参数固定化

比如可选颜色,过滤可配置项

11、多线程与多线程的同步锁

需要有多线程应用的思维,比如用于处理单个的请求或者爆破的多个请求,以避免GUI卡顿或者提供效率

当然,也要注意多线程的一些问题,比如执行顺序,以及同步问题。

在需要同步的地方采用同步锁控制。

12、字符串的格式化由于字符串拼接

13、配置大于代码

允许使用时,直接调用配置进行工作

14、数据的持久化

对于需要持续使用的变量,在内存中保存。

进一步的,可以考虑将数据写入文件保存。

15、数据检查与处理

(1)应当在数据应用前,进行细致的检查,当然,也不必过度,需要在成本(代码冗余、必要性、时间和精力)和效果间平衡。

(2)执行异常,应该考虑try except捕获或者抛出,具体分析需求

(3)异常发生或者数据检查错误时,应当进行标签提示、弹窗提示、输出文本框提示、日志提示等,以及考虑return返回、continue继续或向后执行等

16、编码

读取文件或读取http响应,默认采用utf-8,发生错误再尝试gbk,再次错误则使用iso-8859-1