分析一套源代码的代码规范和风格并讨论如何改进优化代码
Posted dwtenir
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分析一套源代码的代码规范和风格并讨论如何改进优化代码相关的知识,希望对你有一定的参考价值。
工程实践选题是数据获取相关的,这里选择分析一个微信公众号爬虫的源代码。
一.源代码目录结构
目录结构比较清晰
1.bin存放关键代码
2.docs存放说明文件,比如界面说明,安装说明,使用说明,环境说明等
3.wechat这里是爬虫管理的代码,比如数量控制,链接控制
4.wechatspider存放爬虫代码,url获取与解析等
5.其他 一些配置文件和readme
二 .命名规则
1.文件名
可以看到是小驼峰命名法,getNewIp.py中首个单词首字母,第二个单词开始每个单词的的首字母大写
2.类名
使用了大驼峰命名法,每一个单词的首字母都大写。
3.函数名
使用了Snake Case命名法,单词中间用_分隔。这种命名法中的单词的首字母通常都是小写的,并且第一个词的第一个字母既可以是大写的又可以是小写的。
三.风格评价
首先这个代码的结构是比较清晰有层次的,代码按照功能下分,结构合理。
总体命名规则是很优秀的,三种命名法的使用条件符合通常的命名习惯。
注释数量恰到好处,而且非常合理:
文档开头表明了作者:
但是这份代码的缺点在于有些地方有的命名出现不规范,比如这个文件夹命名没有用任何方法分隔单词:
四.代码规范和风格的一般要求
个人来讲,python使用的比较多,这里介绍一下Python通常的代码规范。
事实上Python 官方给出了一种编码规范: PEP 8
这个是PEP8的中文版:https://blog.csdn.net/ratsniper/article/details/78954852
当然这个只是个标准而已,并没有强制要求大家都要去遵守,但好像大多数人都使用了 PEP 8 编码风格,使它已经成为了事实上的代码风格标准。这里主要介绍PEP8。
1.文件开头注释
使用pycharm可以导入预定义的模板。
打开一个新建的Python文件进行编辑(F4),这个文件中默认有两行代码:作者姓名和工程名称。之所以会出现这两行代码,是因为Python文件在创建时是基于文件模板进行创建的,因此会预定义这两个变量。在settings > file and code templates > python script 选中,然后写入模板语法。效果如下:
2.空格使用
- 总是在二元运算符两边加一个空格:赋值(=),增量赋值(+=,-=),比较(==,<,>,!=,<>,<=,>=,in,not,in,is,is not),布尔(and, or, not)。
- 如果使用具有不同优先级的运算符,请考虑在具有最低优先级的运算符周围添加空格。有时需要通过自己来判断;但是,不要使用一个以上的空格,并且在二元运算符的两边使用相同数量的空格。
3.命名方式
以下是常见的命名方式:
- b(单个小写字母)
- B(单个大写字母)
- lowercase 小写字母
- lower_case_with_underscores 使用下划线分隔的小写字母
- UPPERCASE 大写字母
- UPPER_CASE_WITH_UNDERSCORES 使用下划线分隔的大写字母
- CapitalizedWords(或者叫 CapWords,或者叫CamelCase 驼峰命名法 —— 这么命名是因为字母看上去有起伏的外观)。有时候也被称为StudlyCaps。
注意:当在首字母大写的风格中用到缩写时,所有缩写的字母用大写,因此,HTTPServerError 比 HttpServerError 好。 - mixedCase(不同于首字母大写,第一个单词的首字母小写)
命名约定:
Names to Avoid 应避免的名字
永远不要使用字母‘l’(小写的L),‘O’(大写的O),或者‘I’(大写的I)作为单字符变量名。
在有些字体里,这些字符无法和数字0和1区分,如果想用‘l’,用‘L’代替。
Package and Module Names 包名和模块名
模块应该用简短全小写的名字,如果为了提升可读性,下划线也是可以用的。Python包名也应该使用简短全小写的名字,但不建议用下划线。
当使用C或者C++编写了一个依赖于提供高级(更面向对象)接口的Python模块的扩展模块,这个C/C++模块需要一个下划线前缀(例如:_socket)
Class Names 类名
类名一般使用首字母大写的约定。
在接口被文档化并且主要被用于调用的情况下,可以使用函数的命名风格代替。
注意,对于内置的变量命名有一个单独的约定:大部分内置变量是单个单词(或者两个单词连接在一起),首字母大写的命名法只用于异常名或者内部的常量。
Function Names 函数名
函数名应该小写,如果想提高可读性可以用下划线分隔。
大小写混合仅在为了兼容原来主要以大小写混合风格的情况下使用(比如 threading.py),保持向后兼容性。
4.PEP8检查
可以使用PEP8检查代码是否不符合规则
故意写几行不符合Python编码风格的代码:
import sys, os
from subprocess import Popen, PIPE
def long_function_name(
var_one, var_two, var_three,
var_four):
print(var_one)
检查是否符合编码规范:
$ pep8 --first test.py
test.py:1:11: E401 multiple imports on one line
test.py:4:1: E302 expected 2 blank lines, found 1
test.py:6:5: E125 continuation line with same indent as next logical line
可以看到1、4、6行代码不符合规范
还可以输出不符合规范的代码和原因:
$ pep8 --show-source --show-pep8 test.py
以上是关于分析一套源代码的代码规范和风格并讨论如何改进优化代码的主要内容,如果未能解决你的问题,请参考以下文章