2023-01-06 更新
我的代码风格深受《 Python Coding Rule 》的影响。现将阅读时圈出的重点摘录于此,并附注少许个人评论。我不希望任何读者照搬我的代码风格。所有人都会在读写代码的漫漫长路中形成最令自己舒适的代码风格。由于团队项目更注重整体代码风格的规定和老旧代码风格的沿用,个人代码风格几乎没有发挥的空间。
章节号与《 Python Coding Rule 》一文一致。
1 介绍
略。
2 一致性建议
略。
3 代码布局
- 按 Tab 键缩进后自动转换成空格最好,简单整齐跨平台。
- 80 字符确实是极好的限制,偶尔超纲也无妨。
- 折叠长行的首选方法是使用括号。
- 类与类之间空两行,其它情况都空一行。
- 使用 UTF-8 是王道。
4 导入
- 按照标准库、主包、分包的顺序导入。
- 内包的导入不推荐使用相对导入,推荐使用绝对路径。对于需要移植别处的文件,建议附加一个将它本地化的 py 程序。如果你像我一样非要搞相对导入,可以借鉴以下代码。
TODO
5 空格
- 紧邻括号的地方无需空格。
- 对于需要排列的赋值,在等号左侧长度方差较小的情况下,可以试试让等号对齐。
6 注释
- 如果注释很短,最好省略末尾的句号。
- 坚持使用中文来注释,最终发布的时候再给出英文版,开发时每一个瞬间都要用在程序代码的思考上,而不是单词语法的回忆上。
- 文档字符串的三引号独立成行。
7 文档化
略。
8 版本注记
略。
9 命名约定
- 永远不要用
I (upper case of i)
、l (lower case of L)
、O (upper case of the letter between N & P)
和o (lower case of the letter between N & P)
作为单字符的变量名。 - 模块名应当小写且不含下划线(万恶的 QT 坏我统一大业)。
- Error 用大驼峰式命名。
- 不想被导入的全局变量或内部函数或类之前需要加下划线。
- 函数名应当小写,适当添加下划线,不过我个人更倾向于小驼峰式命名。
- 带一个前导下划线的类成员,是放在透明玻璃柜里的商品,能看不能拿;带两个前导下划线的类成员,是放在密封保险箱里的商品,看都不让看。
10 设计建议
- 基于类的异常总是好过基于字符串的异常。模块和包应该继承内建的 Exception 类,定义它们自己域内的异常类,并附加文档字符串。
- 要检查前缀或后缀时用
startswith()
和endswith()
。 - 判定序列是否为空,用
if seq
或if not seq
比计算长度更好。 - 不要用
==
来判断 bool 的值。