wds1846928068

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

      我的工程实践选题是基于数据挖掘技术和大数据分析的成绩预判系统,该选题的主要难点在于利用数据挖掘技术和机器学习的方法对给定的一系列特征量进行数据分析和做出成绩预判。考虑到运用到人工智能领域的机器学习技术,我参考了人工智能课程的一些教材官方源代码在这里跟大家分享一下自己关于代码风格的一些认知和理解。

 

1.根据其编程语言或项目特点,分析其在源代码目录结构、文件名/类名/函数名/变量名等命名、接口定义规范和单元测试组织形式等方面的做法和特点

 

 

 

      很显然,该项目的各个目录层级结构都有自己的功能,如img文件夹下存放的主要是代码所需的静态图片,chapter系列文件夹下存放的是后缀为ipynb的源代码,data文件夹下面存放的是程序相关的一些数据,代码文件夹的命名以章节chapter加下划线的形式命名,数据文件夹和图片的文件夹则直观的以img和data英文单词显式的命名,并且单独放在代码文件夹的末尾使得整个目录层级结构更加清晰明了。

函数&方法    

小写+下划线

*注意*:混合大小写仅被允许用于这种风格已经占据优势的时候,以便保持向后兼容。

函数和方法的参数
如果一个函数的参数名称和保留的关键字冲突,通常使用一个后缀下划线

全局变量
对于from M import *导入语句,如果想阻止导入模块内的全局变量可以使用旧有的规范,在全局变量上加一个前导的下划线。

 

 

2.列举哪些做法符合代码规范和风格一般要求 

 

      由截图可知,

(1)    模块导入总是位于文件顶部,在模块注释和文档字符串之后,模块全局变量和常量之前。导入应该按照以下顺序分组,不同组间用空行隔离。 推荐使用绝对导入,标准库代码应总是使用绝对导入。在包结构比较复杂时,可以使用相对导入。

(2)    重要参数的设置总是位于代码撰写的前面,使得在之后的代码维护方面变得更加简单和设置新的参数

(3)    代码行最大长度: 将所有行限制为最多79个字符。对于具有较少结构限制(文档字符串或注释)的长文本块,行长度应限制为72个字符。

(4)    缩进:一个缩进级别四个空格,连续行使用两种方式使封装元素成为一行:括号内垂直隐式连接和悬挂式缩进。 使用悬挂式缩进应该注意第一行不应该有参数,连续行要使用进一步的缩进来区分。

(5)     表示关键字参数或默认参数值时,不要使用空格

 

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

 

      从截取的代码片段来看,这一段代码没有任何的缩进,这在python中是极不规范的,对于程序的阅读和后期的维护会造成较大的困难和不便。

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

(1)命名

  文件名全部小写;函数名全部按照单词首字母大写;普通变量名一律小写;成员变量名小写且以_为结束作为标记。

(2)缩进

      统一使用 4 个空格进行缩进

(3)空行

      模块级函数和类定义之间空两行;

      类成员函数之间空一行;

(4)引号

      简单说,自然语言使用双引号,机器标示使用单引号,因此 代码里 多数应该使用 单引号

  • 自然语言 使用双引号 "..."
    例如错误信息;很多情况还是 unicode,使用u"你好世界"
  • 机器标识 使用单引号 '...'
    例如 dict 里的 key
  • 正则表达式 使用原生的双引号 r"..."
  • 文档字符串 (docstring) 使用三个双引号 """......"""

(5)注释

  注意注释的数量,注释太多会让人眼花缭乱

  当代码比较长,特别是有多重嵌套的时候,应当在段落的结束处加注释

     每一条宏定义的右边必须要有注释,说明其作用 

posted on 2019-10-12 11:52  wds1846928068  阅读(183)  评论(0编辑  收藏  举报