2.2.3 代码格式与风格指南

编写清晰、规范的代码是提高代码可读性、可维护性和团队协作效率的关键。虽然好多人说工控行业都是一帮电工,没有什么素质,这完全是误解,任何程序所在的行业,都需要个人保证其代码风格能够很好与团队进行协作,在过去一台设备一个人写的多,往往不注意这些,这也导致了设备交接困难,成了后来接手工程师永远的痛,但是时代在发展,如今多人协作使得代码的规范性越来越成为如今的工控开发行业的共识。以下是ST(Structured Text)语言的代码格式与风格指南,涵盖了命名规范、缩进、注释、代码结构等方面的最佳实践。


  1. 命名规范
  • 变量名:

    • 使用有意义的名称,避免使用单个字母或无意义的缩写。
    • 推荐使用驼峰命名法(camelCase)或下划线命名法(snake_case)。
    • 示例:
      motorSpeed : INT; // 驼峰命名法
      motor_speed : INT; // 下划线命名法
      Tips:
      阿凡本人很喜欢驼峰命名法,并且关于驼峰命名法,本书还给出了一个驼峰命名法变量前缀的参考,详情参见附录A!
  • 常量名:

    • 使用全大写字母,单词间用下划线分隔。
    • 示例:
      MAX_TEMPERATURE : REAL := 100.0;
  • 函数与函数块名:

    • 使用动词+名词的形式,明确表达功能。
    • 示例:
      CalculateSpeed();
      ControlMotor();

  1. 缩进与对齐
  • 缩进:

    • 使用“4个空格”作为缩进(避免使用Tab键)。 (这个主要是Tab制表符在不同软件编程环境里是有区别的,可能对于排版是有影响的,所以对于恒定的编程环境下的话,大家也可以忽略这个要求,确实很麻烦!)
    • 在代码块(如IF、FOR、WHILE等)内进行缩进。
    • 示例:
      IF temperature > 100 THEN
      heater := FALSE; // 缩进4个空格
      alarm := TRUE; // 缩进4个空格
      END_IF;
  • 对齐:

    • 在多行赋值或参数传递时,保持对齐以提高可读性。
    • 示例:
      motorSpeed := 100;
      motorPower := 50;
      关于对齐,这里着重提醒一下,倒不是因为强迫症,还是没有进行对齐的代码阅读起来真的很让人抓狂!没有对齐的习惯的话,自觉出去枪毙十分钟!

  1. 注释
  • 单行注释:

    • 使用//进行单行注释,注释内容与代码之间保留一个空格。
    • 示例:
      temperature := 25.0; // 设置初始温度
  • 多行注释:

    • 使用(* … *)进行多行注释,注释内容与符号之间保留一个空格。
    • 示例:
      (*
      这是一个多行注释
      用于说明复杂的逻辑
      *)
  • 注释内容:

    • 注释应简洁明了,避免冗余。
    • 在复杂逻辑或算法前添加注释,说明其功能和作用。

  1. 代码结构
  • 模块化设计:

    • 将功能分解为独立的函数或函数块,提高代码的复用性和可维护性。
    • 示例:
      FUNCTION CalculateSpeed : REAL
      VAR_INPUT
      distance : REAL;
      time : REAL;
      END_VAR
      CalculateSpeed := distance / time;
      END_FUNCTION
  • 代码块分隔:

    • 在逻辑上独立的代码块之间添加空行,以提高可读性。
    • 示例:
      temperature := 25.0;

IF temperature > 100 THEN
heater := FALSE;
END_IF;


  1. 关键字与符号
  • 关键字使用大写:

    • 将ST语言的关键字(如IF、THEN、END_IF等)统一为大写,以提高代码的可读性。 (这一点在我们的InoProShop可以省去了,因为敲出来会自动变成大写,还是很方便的!)
    • 示例:
      IF temperature > 100 THEN // 推荐
      if temperature > 100 then // 不推荐
  • 符号周围留空格:

    • 在运算符(如+、-、=等)和逗号周围保留一个空格。
    • 示例:
      result := a + b; // 推荐
      result:=a+b; // 不推荐

  1. 错误处理与调试
  • 错误处理:

    • 在关键逻辑中添加错误处理代码,确保程序的健壮性。 (求求了,一定要注意这点,很多新手写的代码真的惨不忍睹!)
    • 示例:
      IF temperature < 0 THEN
      error := TRUE;
      END_IF;
  • 调试信息:

    • 在调试阶段,可以使用注释或临时变量记录调试信息。
    • 示例:
      // 调试信息:当前温度值
      debugTemp := temperature;

  1. 文件与项目结构
  • 文件命名:

    • 使用有意义的文件名,反映文件内容或功能。
    • 示例:
      MotorControl.st
      TemperatureControl.st
  • 项目结构:

    • 将相关功能的代码组织在同一文件夹中,便于管理和维护。
    • 示例:
      /Project
      /MotorControl
      MotorControl.st
      /TemperatureControl
      TemperatureControl.st
      关于这项内容,不做强制要求,因为在很多PLC编程平台中,文件都是切入到工程中的,到不用特别在意文件命名的问题。

总结
在初学的时候,养成好习惯,遵循以上代码格式与风格指南,即便没做什么项目也可以让你的师傅对你刮目相看,因为这样做可以显著提高ST语言代码的可读性、可维护性和团队协作效率。通过统一的命名规范、清晰的缩进与对齐、合理的注释和模块化设计,再加上对工艺的了解,就能够编写出高质量的ST代码。


你可能感兴趣的:(ST编程指南,PLC,开发语言,PLC)