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

我的工程实践课题是《facering:头部3D建模以及面部表情追踪识别》,基于此课题,我找了一个类似此课题的demo并对其进行分析

1.(1)目录结构

该代码比较简单,所以只用到了一级目录

detect.py用于检测人的面部表情 

shaders.py用于绘制头部的3D模型 

shape_predictor_68_face_landmark.dat用于人物面部表情在模型上的重定向

(2)文件名/类名/函数名/变量名等命名风格

如图,不论是变量名还是函数名,命名都体现除了变量和函数的功能,比如变量face_detect就表明该变量用于人脸检测,代码的可读性很强

(3)接口定义规范

接口泛指把供给外界直接调用、使用、访问等并且无需知道其内部的具体逻辑结构的抽象函数。该demo中,接口都是以参数,返回值和抽象函数去定义的

(4)单元测试组织形式

因为是Python语言编写的代码,所以该项目的单元组织测试形式为一个窗口或者菜单

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

该demo中文件名/类名/函数名/变量名等命名、接口定义规范和单元测试组织形式符合都代码规范和风格一般要求,尤其时它的函数名和变量名的命名,一目了然,让人一眼就明白该函数或者变量的功能是什么,清晰明了,代码的可读性很强

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

该代码整体还是比较简洁的,没有冗余,但是关键之处缺乏注释,虽然函数名已经起到了解释该函数功能的作用,但是对于英文不太好的程序员来说代码的可读性还是不强,所以,改进方法为:每个功能函数应该添加相应的注释,描述该函数的功能以及逻辑结构,便于后期运维人员对代码的维护和更新优化

4.该类代码的规范和风格

(1)语言规范

      imports 仅仅用做包和模块的导入,包的导入每个尽量独占一行

   packages 导入模块尽量使用模块的全路径

   Exceptions 必须小心使用

  Global variables 避免使用全局变量

  lambda 函数仅仅适用于一行代码能实现的简单函数

  True or False 尽量使用[],'',{},0,None来隐式表示False

(2)风格规范

代码编排:

    1 缩进:4个空格实现缩进,尽量不使用Tab,禁止混用Tab和空格

    2 行:每行最大长度不超过79,换行可以使用反斜杠()。最好使用圆括号将换行内容括起来,不建议使用“;”

    3 空行:类和top-level函数定义之间空两行;类中的方法定义之间空一行;函数内逻辑无关段落之间空一行;其他地方尽量不要再空行。

    4 空格:括号内的第一个位置,不要空格。紧靠右括号的位置也不要空格。冒号(:)、逗号(,)、分号(;)之前不要加空格。

    5 括号:对于单元素tuple一定要加,和括号

(3)命名规范:

    module_name

    package_name  

    ClassName  

    method_name  

    ExceptionName

    function_name

    GLOBAL_CONSTANT_NAME

    global_var_name

    instance_var_name

    function_parameter_name

    local_var_name

(4)其它建议:

    1. 字符串拼接,尽量使用join。使用str的方法而不是内置方法。使用startswith或endswith拉检查前缀和后缀

    2. 单例对象,尽量使用is 、is not,不要使用==

    3. 使用is not而不是not is

    4. 使用def来定义函数,而不是将匿名函数赋给某个变量

    5. 尽量使代码整齐,简洁

    6. 使用isinstance()来判断instance的类型

    

 

 

原文地址:https://www.cnblogs.com/ustc314/p/11649582.html