zoukankan      html  css  js  c++  java
  • 分析一套源代码的代码规范和风格并讨论如何改进优化代码

    我的工程实践课题是《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的类型

        

     

     

  • 相关阅读:
    python函数
    python正则表达式
    FileStorage
    dietpi请暂时不要升级为jessie
    不从SD卡启动树莓派2
    树莓派2系统DietPi简单安装配置使用介绍
    树莓派笔记之使用netselect选择最快Raspbian软件源
    树莓派系统介绍:DIetPi
    【翻译】树莓派2:关闭无线网卡电源管理功能
    树莓派2安装使用小米WIfi(360 小度 腾讯wifi)
  • 原文地址:https://www.cnblogs.com/ustc314/p/11649582.html
Copyright © 2011-2022 走看看