开发者规范
代码规范
如果你的开发经验不是很多但又想避免写出屎山代码的话,建议阅读《软件设计的哲学》
推荐这本书是因为: 现有代码的问题有很多都是这本书里的反例,同时这本书也探讨了解决这些问题的方案
类定义和命名
- 所有的类名称需要使用大驼峰命名法进行命名。
- 所有类属性(常量、变量)均需在class层级定义。
- 所有类实例属性均需在
__init__
方法中声明并初始化 - 所有类与函数请尽量使用三引号(
"""
)编写文档注释。
变量与常量
- 常量请使用全大写+下划线的方式命名,如有可能,请尽量进行类型声明。
- 变量请使用全小写+下划线的方式命名,必须进行类型声明。
异步函数和任务
- 对于脱离类生命周期的周期性定时任务,请继承
AsyncTask基类
实现定时任务类,并使用async_task_manager.add_task()
交由异步任务管理器统一管理; - 对于类生命周期内的异步任务,请使用
asyncio.create_task()
创建协程处理,并在合适的位置处理异常,并使用Task.cancel()
和await
确保任务完成退出; - 对于业务逻辑中串行的异步任务,请使用
await
来创建协程处理并阻塞业务逻辑直至任务结束。
Import 规范
首先我们定义一个“包”:认为每一个直接含有python代码文件的文件夹都是一个包。
- 所有的
import
语句请放在文件的最上方,除非你需要动态导入某个模块或者try import
。 - 对于每个包,包内的文件的互相导入请使用相对路径导入,如
import .config
或者from .config import Config
。 - 对于跨包文件导入,请使用绝对路径导入,如
from package.module import Class
。 - 请使用Ruff检查是否有没有用到的
import
语句,如果有,请删除这条import
语句。
开发者规范
审阅PR
建议参考在 GitHub 上玩转开源项目的 Code Review
提交代码
请在本地使用ruff check
进行检查,检查通过后再进行提交
对于一些较小修改,可以直接使用直推方式推送代码。
对于特大修改,请使用fork,在fork中修改后提交PR,待审阅后进行合并