LabVIEW软件编程规范
一、制定编程规范的意义
项目开发中,经常存在多人共同开发同一程序的情况。风格不一致,导致的结果是程序可读性差,难于维护。为了避免这些问题,做为一个系统软件工程工作者,需要在工程项目开始之前有一套团队成员彼此遵守的开发规范。 制定本编程规范的目的是为了提高软件开发效率及所开发的软件的可维护性,提高软件的质量。本规范由程序组织结构、命名规则、注释规范、程序健壮性、可移植性、错误处理以及软件的模块化规范等部分组成。
二、编程规范
(1)程序组织结构
对于大型程序来说,如果规划不得当,会导致开发期间移动和重命名文件操作占用额外的时间。所以一般采用目录结构(管理磁盘文件)-摘自《 CRIO开发者指南 》
LabVIEW VI是根据其名称和路径进行关联,因此如果你移动或重命名子VI,关联就会遭到破坏,需要手动重新建立关联,适当管理磁盘上的文件会降低日后移动大量文件的风险,帮助开发人员很容易的找到文件,并决定在哪里保存新文件。
许多软件开发者已经规定好文件存储的位置,但是除经典的方法和结构外,以下方法更适合大型程序的开发工作。
1) 将所有项目文件存储到一个单一目录;
2) 在其目录下创建包含文件逻辑群体的文件夹 ;
3) 根据预定的标准对文件进行分组 ;
4) 将程序划分为易处理的逻辑单元 ;
5) 使用具有逻辑性和描述性的命名规则命名 VI;
命名VI,VI库以及目录的时候,尽量避免使用不被所有文件系统所接受的字符,比如“/”,“\”,“:” “~”。 文件名的命名要求表达出文件的内容,要求文件名的长度不得少于5个字母。
6) 将顶层VI与其他源代码区分开来;
文件夹通常用来对文件进行分组、分类,因此可以针对不同的调用对子VI进行分组、分类。文件分组的原则是根据程序中文件的功能、类型以及分级层次来进行的。实际上,磁盘管理真正体现了程序中文件和代码之间的关系。避免在整个程序结构中使用相同的文件名。因为在内存中一次只能有一个给定的名字。如果内存中存在某个文件名的VI,而又试图去载入另外一个具有相同文件的VI,VI会提示你是否替换已存在的VI。这样会导致整个程序出现难以预料的问题。如果打算备份VI文件的话,请务必确定把他们备份到正常搜索结构之外,以便LabVIEW不会错误的在内存中调用这些VI。
LabVIEW Project为开发人员提供了用于管理文件的工具。随着程序不断壮大,开发人员需要对程序关联文件进行管理,如VI、控件资源、第三方函数库、数据文件以及硬件配置文件。工程师可以利用LabVIEW Project Explorer管理这些文件。
图1 LabVIEW项目上的源代码选项
开发者可以利用LabVIEW Project管理所有程序关联文件。默认的项目文件夹为虚拟文件夹,但是开发者可以将其与系统物理目录进行同步。一旦开发者在LabVIEW Project中添加了一个目录,可以将其转变为“自动更新”,以最大限度地提高文件管理和组织灵活性。自动填加文件夹会将磁盘文件管理与Project中的逻辑分组进行关联。如果可能,最好使用自动更新文件夹来保护LabVIEW项
目浏览器中的磁盘框架。
(2)命名规则
1)变量的命名规则
变量的命名规则要求采用“匈牙利法则”。即开头字母用变量的类型,其余部分用变量的英文意思或其英文意思的缩写,尽量避免用中文的拼音,要求单词的第一个字母应大写。
即: 变量名=变量类型+变量的英文意思(或缩写)
对非通用的变量,在定义时加入注释说明。
变量类型见下表:
bool(BOOL) 用b开头 bIsParent
I8、I16、I32、I64 用n开头 nStepCount
U8、U16、U32、U64 用un开头 unSum
float(FLOAT) 用f开头 fAvg
double(DOUBLE) 用d开头 dDeta
NHANDLE 用h开头 hHandle
path 用p开头 pDDisk
enum 用e开头 eMenu
wavedata 用w开头 wAnalogData
cluster 用clu开头 cluInformation
string 用str开头 strName
Array 用A开头 AName
全局变量用g_开头,如一个全局的长型变量定义为g_lFailCount,即:变量名=g_+变量类型+变量的英文意思(或缩写);
对常量命名,要求常量名用大写,常量名用英文表达其意思。
后缀定义:
1D 一维数组
2D 二维数组
iD i维数组
对未提及的变量类型的定义需在日后协商。
2)子VI的命名规则
1) 子VI参数规范①、 参数名称的命名参照变量命名规范。
②、 为了提高程序的运行效率,减少参数占用的堆栈,传递大结构的参数,一律采用指针或引用方式传递。3)另外,用正确的反义词组命名具有互斥意义的变量或相反动作的函数等。
说明:下面是一些在软件中常用的反义词组。
add / remove begin / end create / destroy
insert / delete first / last get / release
increment / decrement put / get
add / delete lock / unlock open / close
min / max old / new start / stop
next / previous source / target show / hide
send / receive source / destination
cut / paste up / down
(3)注释规范
1)子VI的注释
对于子VI,应该从“功能”,“参数”,“主要思路”、“调用方法”、“日期”六个方面用如下格式注释:
①、 对于某些函数,其部分参数为传入值,而部分参数为传出值,所以对参数要详细说明该参数是入口参数,还是出口参数,对于某些意义不明确的参数还要做详细说明(例如:以角度作为参数时,要说明该角度参数是以弧度(PI),还是以度为单位),对既是入口又是出口的变量应该在入口和出口处同时标明。②、 在注释中应该详细说明函数的主要实现思路、特别要注明自己的一些想法,