我的工程实践为《智能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。

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