我们已经准备好了,你呢?

2024我们与您携手共赢,为您的企业形象保驾护航!

编写高质量代码:91 个改进编程的技巧

1. 简介

建议1:理解概念——详情见《禅》

技巧 2:编写代码

(1)避免不规范的代码,比如只通过大小写来区分变量,使用容易混淆的变量名,害怕变量名太长等。有时候长变量名可以让代码更易读。

(2)深入学习相关知识,如语言特性、库特性、演进过程等,深入学习一到两个业界认可的代码库,如Flask。

提示3:了解与C的区别,例如缩进和{},单引号和双引号,三元运算符?,-Case语句等。

提示 4:在代码中添加适当的注释

建议五:适当添加空行,让代码布局更加合理

技巧 6:编写函数的 4 个原则

(1)函数设计尽量简短,嵌套层次不宜过深

(2)函数声明要合理、简单、易用

(3)函数参数设计要考虑向后兼容性

(4)一个函数只做一件事,尽量保证函数粒度的一致性

提示 7:将常量保存在一个文件中,并尽可能使用全部大写字母。

2. 编程习惯用法

技巧 8:使用语句查找问题,但要注意断言会影响效率

建议9:交换数据值时不建议使用临时变量。而是直接使用a,b = b,a

技巧 10:利用惰性计算来避免不必要的计算

技巧11:了解枚举替代实现的缺陷(最新版本已添加枚举功能)

建议十二:不建议使用type进行类型检查,因为有时候type的结果不一定可靠,必要时建议使用函数代替。

提示 13:在进行除法之前尝试将变量转换为浮点类型(以后不用担心)

提示 14:警惕 eval() 函数中的安全漏洞,这些漏洞有点类似于 SQL 注入

技巧 15:使用 () 获取序列迭代的索引和值

建议 16:区分 == 和 is,特别是在比较字符串等不可变类型时(详情见注释)

建议 17:尽可能使用它。在 .NET 中编码是一件令人头疼的事情,但你不必考虑太多。

建议 18:构建合理的包层次结构来管理

3.基本用法

建议 19:谨慎使用 from... 语句以避免命名空间污染

技巧 20:首先使用导入模块(已删除)

建议21:i+=1 不等于++i。在 中,++i 前的加号仅表示正号,而不是运算。

建议 22:习惯使用 with 自动关闭资源,特别是在读写文件时

技巧 23:使用 else 子句简化循环(异常处理)

建议 24:遵循异常处理的一些基本原则

(1)注意异常的粒度,在try块中写尽可能少的代码

(2)谨慎使用个别语句或陈述,并找出具体的例外情况。

(3)注意异常捕获的顺序,在适当的层次处理异常

(4)使用更加友好的异常信息,并遵守异常参数的规范

建议 25:避免潜在的陷阱

Tip 26:深入理解None,正确判断对象是否为空。

建议 27:使用 join 函数代替 + 运算符来连接字符串

技巧 28:格式化字符串时使用函数代替 %

建议 29:区别对待可变对象和不可变对象,尤其是用作函数参数时

提示 30:[]、{} 和 ():一致的容器初始化格式。使用列表推导式可以使代码更清晰、更高效。

提示31:向函数传递参数时,不要通过值或引用传递,而要通过对象或对象引用传递。

建议 32:警惕默认参数的潜在问题,尤其是当默认参数是可变对象时

建议 33:在函数中谨慎使用可变长度参数 args 和 kargs

(1)这种用法过于灵活,导致函数签名不清晰,难以阅读。

(2)如果函数参数过多,通过使用可变长度参数来简化函数定义,那么该函数通常可以重构

建议 34:理解 str() 和 repr() 之间的区别

(1)二者的目标不同:str主要面向客户,其目的是可读性,返回值是一个既方便用户使用又可读的字符串;而repr是面向解释器或者开发者的,其目的是准确性,它的返回值代表解释器内部的定义。

(2)当你在解释器中直接输入变量时,默认调用repr函数,而print(var)默认调用str函数。

(3)repr函数的返回值一般可以使用eval函数恢复

(4)两者分别调用对象的内置函数()和()。

技巧35:区分静态方法和类方法的使用场景

4. 图书馆的使用

技巧36:掌握字符串的基本用法

建议 37:选择 sort() 和 when() 函数

sort() 对列表进行排序,因此它无法对元组等不可变类型进行排序。

() 可以对任何可迭代类型进行排序,而不会改变原始变量本身。

技巧38:使用copy模块深度复制对象,区分浅复制和深复制

建议39:在模块中使用计数统计,它是字典类的子类

建议 40:深化你的知识

建议 41:使用模块来处理命令行参数

技巧 42:使用 CSV 处理大型 CSV 文件

提供了CSV文件处理模块,提供了等功能。

能够提供块切分、合并处理,适合数据量较大的情况,更方便二维数据操作。

建议 43:使用解析的 XML

建议 44:了解模块的优缺点

优点:接口简单、跨平台通用、支持的数据类型广泛、扩展性强

缺点:无法保证数据操作的原子性、存在安全问题、不同语言之间不兼容

建议45:序列化JSON模块的另一种选择:加载和转储操作

提示 46:使用获取堆栈信息

建议 47:使用日志信息

建议 48:使用模块编写多线程程序

建议 49:使用 Queue 模块让多线程编程更安全

5.设计模式

建议 50:使用模块来实现单例模式

建议 51:使用 mixin 模式让你的程序更加灵活

建议 52:使用发布 - 订阅模式实现松散耦合

建议 53:使用状态模式美化你的代码

6. 内部机制

建议 54:理解内置对象

提示55:()不是构造函数,了解它和它之间的区别

技巧56:理解变量查找机制,即作用域

本地范围

全局范围

嵌套作用域

内置范围

提示57:为什么需要 self 参数?

建议 58:理解 MRO(方法解析顺序)和多重继承

建议59:理解描述符机制

建议 60:区分 () 和 () 方法

建议 61:使用更安全的

建议 62:掌握元类

建议 63:熟悉对象协议

技巧 64:使用运算符重载实现中缀语法

技巧 65:熟悉的迭代器协议

建议 66:熟悉的生成器

建议 67:基于生成器的协程,并了解协程、多线程和多处理之间的区别

建议 68:了解 GIL 的局限性

技巧 69:对象管理和垃圾收集

7. 使用工具协助项目开发

建议 70:从 PyPI 安装第三方包

技巧 71:使用 pip 和 yolk 安装和管理软件包

建议 72:创建一个包

建议 73:理解单元测试的概念

建议 74:为你的包编写单元测试

建议 75: 使用测试驱动开发 (TDD) 来提高代码的可测试性

建议 76:使用代码风格检查

代码风格审查

代码错误检查

发现重复和不合理的代码,以便于重构

高度可配置和可定制

支持与各种 IDE 和编辑器集成

能够根据代码生成 UML 图

可以与持续集成工具结合,例如,支持自动代码审查

建议 77:进行有效的代码审查

建议 78:将软件包发布到 PyPI

8.性能分析与优化

建议 79:理解代码优化的基本原则

建议 80:使用性能优化工具

建议 81:利用并定位性能瓶颈

建议 82:使用并分析内存使用情况

建议83:努力降低算法复杂度

建议 84:掌握循环优化的基本技巧

减少循环内的计算

将显式循环改为隐式循环,当然这会牺牲代码的可读性

尝试在循环中引用局部变量

二维码
扫一扫在手机端查看

本文链接:https://by928.com/2124.html     转载请注明出处和本文链接!请遵守 《网站协议》
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。

项目经理在线

我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

13761152229

上班时间

周一到周五

公司电话

二维码
微信
线