分析一套源代码的代码规范和风格并讨论如何改进优化代码
结合工程实践选题相关的一套源代码,根据其编程语言或项目特点,分析其在源代码目录结构、文件名/类名/函数名/变量名等命名、接口定义规范和单元测试组织形式等方面的做法和特点
分析一套我平常在用的代码--scrapy爬虫框架,使用的python语言。
Scrapy运行流程大概如下:
- 引擎从调度器中取出一个链接(URL)用于接下来的抓取
- 引擎把URL封装成一个请求(Request)传给下载器
- 下载器把资源下载下来,并封装成应答包(Response)
- 爬虫解析Response
- 解析出实体(Item),则交给实体管道进行进一步的处理
- 解析出的是链接(URL),则把URL交给调度器等待抓取
Scrapy将功能封装到不同的目录中,具体功能如下:
spiders
爬虫是主要干活的, 用于从特定的网页中提取自己需要的信息, 即所谓的实体(Item)。用户也可以从中提取出链接,让Scrapy继续抓取下一个页面
pipeline
负责处理爬虫从网页中抽取的实体,主要的功能是持久化实体、验证实体的有效性、清除不需要的信息。当页面被爬虫解析后,将被发送到项目管道,并经过几个特定的次序处理数据。
middlewares
各种中间件,主要处理各个模块之间传输的数据
items
定义一种数据结构,来存储抓取的信息
db
我自己加的,让item流入到数据库中
email_
我自己加的,爬虫情况发送到邮箱
上面是setting中的全局变量,变量名的意思一目了然,也有注释来解释含义,这一点做的很好。
在一个具体的爬虫中,各个类名,函数名,变量名都有其含义,不要随意改动(在不理解scrapy运行机制的情况下),傻瓜式操作。
列举哪些做法符合代码规范和风格一般要求
在每个缩进级别中使用4个空格,__init__使用_防止导出模块
import模块的导入分开写,以及注意导入的顺序
模块的命名约定,类名首字母大写,且是大驼峰命名,函数名首字母小写
列举哪些做法有悖于“代码的简洁、清晰、无歧义”的基本原则,及如何进一步优化改进
要避免相对路径,使用绝对路径。
总结同类编程语言或项目在代码规范和风格的一般要求
- 每行长度不超过80个字符
- 缩进使用4个空格缩进
- 代码注释的使用
- 文档注释用"""包围,行注释用#开头,后面空一格再写注释内容.
- 导入模块
- 模块的导入按照系统自带模块,第三方模块和本项目模块的顺序导入,每种模块中间隔一个空行.每各种模块内根据模块的首字母按字典顺序排序.一行只能导入一个模块,若有多个需要导入,则用括号包围后换行.
- 命令规范
- Python使用下划线命名法类名使用驼峰式命名方法,并且首字母大写.API接口的url使用短横线分割.所有常量使用大写+下划线表示法