工程能力(2)代码的艺术&编码惯例
代码艺术优秀代码标准:代码的正确和性能代码的可读和可维护性代码的可运维和可运营代码的可共享和可重用系统设计要点:清楚什么是系统架构注意系统设计的约束清楚需求是系统设计决策的来源系统设计的风格与哲学(每个组件的功能都应该足够的专一和单一)清楚接口的重要性Mini-spider框架多线程编程数据互斥访问添加与判断是否存在不应该分开处理 写入一个函数中临界区的注意事项不要把耗费时间的操作放在临界区内执行
·
代码艺术
优秀代码标准:
- 代码的正确和性能
- 代码的可读和可维护性
- 代码的可运维和可运营
- 代码的可共享和可重用
系统设计要点:
- 清楚什么是系统架构
- 注意系统设计的约束
- 清楚需求是系统设计决策的来源
- 系统设计的风格与哲学(每个组件的功能都应该足够的专一和单一)
- 清楚接口的重要性
Mini-spider框架
多线程编程
- 数据互斥访问
添加与判断是否存在不应该分开处理 写入一个函数中
- 临界区的注意事项
不要把耗费时间的操作放在临界区内执行,否则无法发挥多线程对硬件资源最大化利用的优势
- I/O操作的处理
文件读取IO操作属于异常操作,文件读取错误会抛异常中断程序继续执行,如果放入临界区会导致异常操作消耗大量资源
代码检查
代码检查的意义:
- 提高代码可读性
- 发现代码缺陷
- 提前发现问题
- 规范制定与准入检查
- 提升编码规范可运营性
Python编码检查规则与惯例
检查规则:
- 代码风格规范
- 每行字符<=120
- 函数长度<=120行
- 禁止以“;”结束语句
- 一行只能写一条语句
- 尽量避免冗余括号
- 禁止tab缩进 统一使用四个空格缩进
- 单行内容拆成多行,首行留空,从第二行起统一缩进4个空格
- 类或全局函数定义相隔3个空行,类方法之间相隔1个空行
- 括号内均不添加空格,
- 参数列表左边括号前不加空格
- ,;:前不加空格 后加1个空格
- 二元运算符前后各加一个空格
- 关键字参数或参数默认值的等号前后不加空格
- 注释:文件声明包括版权声明,功能和用途介绍,修改人及联系方式
- 文档字符串docstring注释 三个双引号括起来
- 外部接口必须docstring注释 内部视情况而定
- 接口dicstring内容:功能简介 参数 返回值 如果存在异常抛出需要特殊注明
- 引用规范
- 禁止使用from... import...句式直接导入类或函数,导入库后再调用
- 每行只导入一个库
- 按照标准库 第三方库 应用程序自有库依次导入 间隔一行
- 定义规范
- 局部变量小写字母 单词间下划线分割
- 全局变量必须写在文件头部
- 常量使用全大写字母
- 函数返回值必须<=3个 否则具名形式包装
- 函数默认参数类型要求:整数 bool 浮点数 字符串 None
- 类定义命名采用首字母大写的驼峰式
- protect成员命名采用前加单下划线 private成员命名采用前加双下划线前缀
- 如果一个类没有基类 必须继承object类
- 类构造函数尽量简单 不能包含可能失败或过于复杂的操作
- 异常处理规范
- 禁止使用双参数形式或字符串形式的语法抛出异常
- 自定义异常:需定义名为Error异常基类,且继承Exception,其他异常均由该基类派生而来
- 禁止使用except:捕获所有异常,一般情况下使用except.....:捕获具体异常
- 捕获异常使用as语法 禁止逗号语法
编码惯例
- 让模块既可以被导入又可被执行
python无入口函数 通过自定义main函数实现: if 内置变量_name_==‘_main_’
- in运算符的使用
可代替大量重复判断过程 降低时间复杂度 提高代码执行效率
- 不适应临时变量交换两个值
- 用序列构建字符串
更多推荐
已为社区贡献2条内容
所有评论(0)