分析一套源代码的代码规范和风格并讨论如何改进优化代码

1. 结合工程实践选题相关的一套源代码,根据其编程语言或项目特色,分析其在源代码目录结构、文件名/类名/函数名/变量名等命名、接口定义规范和单元测试组织形式等方面的作法和特色;mysql

    工程实践为爬取用户评论在对这些数据进行分析,所以选取了一套爬取用户微博信息的代码进行分析,下图是该程序的结构:sql

 

    

search_spider - 根据关键字和时间进行爬取的模块 数据库

----hour_fenge.py 时间分隔函数:对要搜索的时间期限进行以每小时为单位的划分,返回包含全部时间单位的列表编程

----search_start.py 根据关键字和时间条件进行爬取的主要函数:其中包括爬取某页所有微博、微博全部页数的计算、保存数据库等功能cookie

tools - 工具模块 编程语言

----Config.cfg 数据库等配置文件ide

----Cookie_Process.py cookie处理函数:其中包括获取文件中存储的cookie、更新文件中存储的cookie等功能函数式编程

----Date_Process.py 时间处理函数:其中包括对爬取到微博的不一样时间格式进行统一函数

----Emoji_Process.py 表情处理函数:清除掉包含的utf8bm4编码格式的表情 ----Mysql_Process.py mysql数据库工具类:其中包括数据库链接、关闭、增删改查的操做等工具

----Number_Process.py 转发、评论数处理函数:对爬取到的微博的转发、评论数进行统一

user_spider - 爬取根据关键字搜索到的微博对应的微博用户的基本资料模块 

----cookie.file 存储可用的cookie信息

----user_start.py 爬取用户资料的主要功能函数:包括获取所爬取微博的全部用户ID,并根据每一个ID爬取其基本信息

weibo_spider - 根据某个用户ID爬取其全部微博的模块 

-----cookie.file 存储可用的cookie信息

-----weibo_start.py 爬取用户所有微博的主要功能函数:其中包括爬取某页所有微博、微博全部页数的计算、保存数据库等功能

comment_spider - 爬取根据关键字搜索到的微博对应的微博下的所有评论

----cookie.file 存储可用的cookie信息

----comment_start.py 爬取微博评论的主要功能函数:包括获取所爬取微博的全部微博ID,并根据每一个ID爬取其所有评论信息

 

从图中的代码结构,咱们能够发现:

  1. 目录结构:将各个模块分隔开放在不一样的文件夹下,此程序实现了4个功能,每一个功能对应了一个文件夹,而另一个文件夹下存放的是公用的工具类以及相应的配置文件,体现了高内聚低耦合的特色。
  2. 命名:各个文件名均由有意义的英文单词组成,而多个英文单词之间由“_”分隔开。对于各个模块的文件名,英文字母均以小写字母开头;而对于tools文件夹下的文件名,英文字母均大写字母开头,依次表示与其余模块文件的差别。
  3. 单元测试模块:在此项目中并无发现单元测试模块,但在正常开发中,单元测试是必不可少的,下图是使用Java开发的博客项目,能够看到main文件夹下是正常模块文件,而resources下存放的是相应的配置文件。Test是模块测试代码,相应的resources下存放了对应的配置文件。

 

2. 列举哪些作法符合代码规范和风格通常要求;

 

 

  • 注释

 

 

 

 

  • 命名

     使用有意义的,英文单词或词组,不使用汉语拼音

    package/module 名中不要出现 –

 

  • 空格+缩进
 * list, dict, tuple, set, 参数列表的 , 后面加一个空格
 *  dict 的 : 后面加一个空格
 * 操做符两端加一个空格,如 +, -, *, /, |, &, =
 * 接上一条,在参数列表里的 = 两端不须要空格
 * 括号((), {}, [])内的两端不须要空格
  • 空行
    * function 和 class 顶上两个空行
    * class 的 method 之间一个空行
    * 函数内逻辑无关的段落之间空一行,不要过分使用空行
    * 不把多个语句写在一行
    * if/for/while 语句中,即便执行语句只有一句,也要另起一行

3. 列举哪些作法有悖于“代码的简洁、清晰、无歧义”的基本原则,及如何进一步优化改进;

    语句过长,没有使用换行,虽然是sql语句不是真正操做的代码,可是阅读起来也很不方便,可使用“\”控制换行。

 

 

    注释过于简单,虽说明了每一个函数的功能,可是对于输入参数以及输出状况没有说明,对于多人协做开发可能会存在影响。

    配置和代码放在一块儿,在这种比较小的项目中虽然不会形成什么影响。但对于模块较大以及配置较多的项目中,可能会形成混乱,能够将全部配置文件都存放在一个文件夹中。

4.总结同类编程语言或项目在代码规范和风格的通常要求。

  •  命名

          函数、变量及属性都用小写单词拼写,只见用_链接,不遵循驼峰命名法

          类与异常应该首字母大写,不要用_链接

          变量要尽量有意义

  • 空白

          和语法相关的每一层缩进都用4个空格表示,不能混用Tab和空格

          若是一行的字符超过80个时,应进行换行。

          赋值时等号两边都要有一个空格

          在使用函数进行函数式编程时,函数之间要空两行

          在类中的函数,函数之间应该空一行

          函数与类是同一个级别,则他们之间应该空两行

  • 语句

          判断变量是否为None、False或True时,要用is,例如,if a is None

          import语句应放在句首,导入时最好指定具体功能。

          检测容器不为空时,应使用if 容器名,例如,lists = [] if lists

  • 注释

          Python中的注释分为单行注释,多行注释。

          对某些重要的代码块的功能说明,应使用单行注释

          对整个模块功能的说明应使用多行注释

相关文章
相关标签/搜索