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

    我的工程实践为《智能wifi无线通信系统的分析与设计》,由于工程偏向硬件,所以找了树莓派机器人相关的源码,包括andriod控制端和wifi模块的设计。     

     如图为目录结构。

      1.android.java 实现Android与树莓派的无线通信,指令下发以及身份识别等工作。

      2.pysocket.py  树莓派配置AP热点,实时上传视频流到固定的网址。

      3.README是项目的说明文件

      4.sensor.py 传感器数据传到安卓客户端

      5.shipin.py 实现视频实时显示

     如图为类名定义和函数定义,均符合命名规范。

     如图为socket连接,注释简洁明了。

     此段为python代码,树莓派配置AP热点,实时上传视频流到固定的网址。

    如下介绍python代码的风格规范:

    代码规范:

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

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

      3.导入:

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

        推荐使用绝对导入,标准库代码应总是使用绝对导入。在包结构比较复杂时,可以使用相对导入。

      4.注释:

        行注释:行注释和代码声明间至少间隔两个空格。

        块注释:同等级别的一块代码的注释,块注释内每行注释以 # 开头,内部注释段落之间使用以 # 开头的空行注释隔开。

        避免无谓的注释

      5.命名:

        类名:类名通常使用驼峰式命名习惯,使用驼峰式时,缩写全部大写,例如:HTTPServerError 好于 HttpServerError。

        函数与方法参数:实例方法第一个入参一定要是 self。类方法第一个入参一定要是 cls。如果函数入参名和保留关键字冲突,则后缀下划线好过缩写或者糟糕的拼写。

             常量:  常量一般定义在模块级别。命名风格如:MAX_OVERFLOW 或 TOTAL 。

        公共和内部接口:模块应该使用 __all__ 属性明确声明公共 API 名,如果 __all__ 为空,则表明模块没有公共 API。尽管使用了 __all__ 属性,内部接口仍然需要使用前缀下划线。

      6.非ASCII字符:尽量不使用非 ASCII 字符, 使用时必须使用 UTF-8 编码.即使是英文, 也不应将用户界面的文本硬编码到源代码中, 因此非 ASCII 字符应当很少被用到. 特殊情况下可以适当包含此类字符. 

      7.函数调用:要么一行写完函数调用, 要么在圆括号里对参数分行, 要么参数另起一行且缩进四格. 如果没有其它顾虑的话, 尽可能精简行数, 比如把多个参数适当地放在同一行里.

      8.预处理指令/命名空间不使用额外缩进, 类/结构体/枚举/函数/语句使用缩进;

      

      如图,在此项目中 行注释应该在一句代码后记注释,他将注释放到代码上方有悖规范。

    也多了不少无谓的注释,不够简洁。此代码优化则要规范行代码的注释,因为是硬件模块所以在代码也需要模块化注释以下,另外删去无谓的代码。

    总结同类编程语言c++在代码规范和风格的一般要求:

      1.大括号使用规则:左括号前不换行;右括号后有else等代码时不换行。

      2.if、for、while、switch、do等关键字与左右括号之间必须加空格;任何运算符左右必须加空格。

        建议:即使if判断后只跟一个语句也要加上大括号。

        原因:便于阅读;就算日后要修改if的执行语句也比较方便。

      3.换行规范:单行字符数最好不超过80个字符。

         第二行相对第一行缩进4个空格,其余行与第二行对齐;运算符与下文一起换行;多个参数则在逗号后换行;小括号前不得换行。

      4.在方法体内的执行语句组、变量的定义语句组、不同的业务逻辑之间或者不同的语义之间要插入空行;换而言之,具有相同语义、功能的语句要尽量放在一起。

      5.当一个类有多个同名方法时,按顺序放置,便于阅读。

      6.类内方法的定义顺序推荐采用:公有或保护>私有>getter、setter。

         原因:公有类的调用和维护是最为重要的,首屏展示最好;保护方法虽然只是应用于子类,也可能是“模板设计模式”下的核心方法(抽象类知识点);私有方法外部一般不关心;而其余方法信息价值相对较低。

     

  • 相关阅读:
    大牛总结的Linux提权Exp合集
    CTF中图片隐藏文件分离方法总结
    解压报错gzip: stdin: not in gzip format tar: Child returned status 1 tar: Error is not recoverable: exiting now的解决方法
    CTF中常见Web源码泄露总结
    解决“当前扩展缓存策略没有进行注册”的错误
    【红色警报】XXE 高危漏洞将大面积影响微信支付安全,可能导致系统沦陷,请升级你的系统!
    Senparc.Weixin SDK v5.0 升级公告
    使用 VSTS 进行 CI 的过程中,无法识别 .NET Core 2.x 的情况处理
    .net core DI 注册 Lazy<> 类型
    【备忘】ASP.NET MVC 5 升级到 ASP.NET Core MVC 的部分变化
  • 原文地址:https://www.cnblogs.com/russian/p/11632223.html
Copyright © 2011-2022 走看看