资源描述
LabVIEW软件编程规范
一、制定编程规范意义
项目开发中,经常存在多人共同开发同一程序状况。风格不一致,导致成果是程序可读性差,难于维护。为了避免这些问题,做为一种系统软件工程工作者,需要在工程项目开始之前有一套团队成员彼此遵守开发规范。
制定本编程规范目是为了提高软件开发效率及所开发软件可维护性,提高软件质量。本规范由程序组织构造、命名规则、注释规范、程序健壮性、可移植性、错误解决以及软件模块化规范等某些构成。
二、编程规范
(1)程序组织构造
对于大型程序来说,如果规划不得当,会导致开发期间移动和重命名文献操作占用额外时间。因此普通采用目录构造(管理磁盘文献)-摘自《 CRIO开发者指南 》
LabVIEW VI是依照其名称和途径进行关联,因而如果你移动或重命名子VI,关联就会遭到破坏,需要手动重新建立关联,恰当管理磁盘上文献会减少日后移动大量文献风险,协助开发人员很容易找到文献,并决定在哪里保存新文献。
许多软件开发者已经规定好文献存储位置,但是除典型办法和构造外,如下办法更适合大型程序开发工作。
1) 将所有项目文献存储到一种单一目录;
2) 在其目录下创立包括文献逻辑群体文献夹 ;
3) 依照预定原则对文献进行分组 ;
4) 将程序划分为易解决逻辑单元 ;
5) 使用品有逻辑性和描述性命名规则命名 VI;
命名VI,VI库以及目录时候,尽量避免使用不被所有文献系统所接受字符,例如“/”,“\”,“:” “~”。 文献名命名规定表达出文献内容,规定文献名长度不得少于5个字母。
6) 将顶层VI与其她源代码区别开来;
I. 文献夹通惯用来对文献进行分组、分类,因而可以针对不同调用对子VI进行分组、分类。文献分组原则是依照程序中文献功能、类型以及分级层次来进行。事实上,磁盘管理真正体现了程序中文献和代码之间关系。避免在整个程序构造中使用相似文献名。由于在内存中一次只能有一种给定名字。如果内存中存在某个文献名VI,而又试图去载入此外一种具备相似文献VI,VI会提示你与否替代已存在VI。这样会导致整个程序浮现难以预料问题。如果打算备份VI文献话,请务必拟定把她们备份到正常搜索构造之外,以便LabVIEW不会错误在内存中调用这些VI。
LabVIEW Project为开发人员提供了用于管理文献工具。随着程序不断壮大,开发人员需要对程序关联文献进行管理,如VI、控件资源、第三方函数库、数据文献以及硬件配备文献。工程师可以运用LabVIEW Project Explorer管理这些文献。
图1 LabVIEW项目上源代码选项
开发者可以运用LabVIEW Project管理所有程序关联文献。默认项目文献夹为虚拟文献夹,但是开发者可以将其与系统物理目录进行同步。一旦开发者在LabVIEW Project中添加了一种目录,可以将其转变为“自动更新”,以最大限度地提高文献管理和组织灵活性。自动填加文献夹会将磁盘文献管理与Project中逻辑分组进行关联。如果也许,最佳使用自动更新文献夹来保护LabVIEW项目浏览器中磁盘框架。
(2)命名规则
1)变量命名规则
变量命名规则规定采用“匈牙利法则”。即开头字母用变量类型,别的某些用变量英文意思或其英文意思缩写,尽量避免用中文拼音,规定单词第一种字母应大写。
. ^1 [7 W" ]0 R" b R 即: 变量名=变量类型+变量英文意思(或缩写)
:Q3 A1 c3 n& t+ x;E/ M5 z 对非通用变量,在定义时加入注释阐明。
变量类型见下表: k f$ {' ^4 Y;l+ c& h
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_+变量类型+变量英文意思(或缩写);
对常量命名,规定常量名用大写,常量名用英文表达其意思。
2 P) J$ |8 f,a,n6 ^;Y7 c+ D!e0 C K后缀定义:
1D 一维数组
2D 二维数组
iD i维数组
对未提及变量类型定义需在日后协商。
2)子VI命名规则
1) 子VI参数规范5
①、参数名称命名参照变量命名规范。
+ Y;u% Z,a,~②、为了提高程序运营效率,减少参数占用堆栈,传递大构造参数,一律采用指针或引用方式传递。
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,应当从“功能”,“参数”,“重要思路”、“调用办法”、“日期”六个方面用如下格式注释:
~' t0 q2 j9 ?,y) {5 i
b①、对于某些函数,其某些参数为传入值,而某些参数为传出值,因此对参数要详细阐明该参数是入口参数,还是出口参数,对于某些意义不明确参数还要做详细阐明(例如:以角度作为参数时,要阐明该角度参数是以弧度(PI),还是以度为单位),对既是入口又是出口变量应当在入口和出口处同步标明。,o4 ②、在注释中应当详细阐明函数重要实现思路、特别要注明自己某些想法,如果有必要则应当写明对想法产生来由。对某些模仿函数应当注释上函数出处。&
③、在注释中详细注明函数恰当调用办法。在注释中要强调调用时危险方面,也许出错地方。
④# j% P$ G {3 s:w6 q④④ 、对日期注释规定记录从开始写函数到结束函数测试之间日期。
⑤、" h- E# d5 }" \ f. Z2 q) y⑤
对函数注释开始到函数命名之间应当有一组用来标记特殊字符串。:[% t$ _如果算法比较复杂,或算法中变量定义与位置关于,则规定对变量定义进行图解。对难以理解算法能图解尽量图解。,s2
2)变量注释
对于变量注释紧跟在变量背面阐明变量作用。原则上对于每个变量应当注释,但对于意义非常明显变量,如:i,j等循环变量可以不注释。
3)其她注释
在函数内咱们不需要注释每一某些代码。但必要在各功能模块每一重要某些之前添加块注释,注释每一组代码,在循环、流程各分支等,尽量多加以注释。其中循环、条件、选取等位置必要注释。对于先后顺序不能颠倒状况,建议在注释中增长序号。在其她顺序执行程序中,必要加一种注释,注明这一段语句所构成小模块作用。对于自己某些比较独特思想规定在注释中标明。
(4) 程序健壮性
错误解决是发现解决程序中浮现问题、战胜无法预料事情和实现良好编程风格主线。
1、 错误解决基本
1) 所有 VI 必要捕获并报告从错误端反馈回来错误
2) 通过错误端间错误簇传递来捕获错误
3) 捕获循环中每个迭代错误
4) 在循环中禁用错误索引
5) 在应用程序使用过程中,使用错误日记文献存储错误信息
6) 在无人值守或远程控制程序,禁用对话框报告错误。
7) 避免使用内置错误报告子VI
8) 对I/O设备错误使用悲观代码,对警告使用积极代码
编程中规定考虑函数各种执行状况,尽量解决所有流程状况。将函数分为两类:一类为与屏幕显示无关,(不与顾客互换信息函数)一类为与屏幕显示有关。(与顾客互换信息函数)对于与屏幕显示无关函数,函数通过返回值来报告错误。对于与屏幕显示关于函数,函数要负责向顾客发出警告,并进行错误解决。严格测试:对每一段代码都规定进行严格测试,特别对某些功能函数要对其各种临界点(例如零值、无穷大值等)进行测试。尽量做到每一段代码零错误。
(5) 可移植性
- L. V9 q( Q!o4 j. x0 j:v1、高质量代码规定可以跨平台,因此咱们代码应当考虑到对不同平台支持,特别是对windows98和windowsnt支持。
2# ?# e# R5 ?9 I z3 U![22 、对不同硬件与软件函数要做不同解决。$
(6)模块化
为了提高软件重用性,减少重复开发工作量。同步也为了提高程序可读性,以便程序维护,必要加强软件模块化工作。模块化应当遵循如下几种基本规范:
1、函数应当作到精而小,函数代码应当控制在一种适度规模。规定编写者更加详细对函数注释,以及设计思想等。
2、某一功能,如果重复实现三遍以上,既应当考虑模块化,将其写成通用函数。并向开发人员发布。并规定将接口文档和实现功能备案。
3、每一种开发人员要尽量运用其她人现成模块,减少重复开发。
4、对函数进行模块化时,要考虑函数层次关系,特别是在增长新功能模块时,对本来函数代码要进行认真调节,做到相似功能不同函数没有重复代码,此规定目在于便于代码维护。
模块化某些注意事项:
① 、设计好模块接口,涉及:函数接口和变量接口。
(7) 程序备份
1. 要有备份记录
备份时注明备份日期和重要增长功能
2. 定期备份
依照程序量多少,可以每天备份一次,也可以半天备份。
3. 各种介质备份
至少在硬盘上做2个备份,在软盘上做一种备份;在使用她人主机进行备份时,不可放于没有密码保护ftp服务器上,可以发送到自己email信箱中进行备份。
(8) 代码测试、维护
1. 单元测试规定至少达到大代码覆盖。
2. 单元测试开始要跟踪每一条代码,并观测数据流及变量变化。
3. 清理、整顿或优化后裔码要通过审查及测试。
4. 代码版本升级要通过严格测试。
5. 使用工具软件对代码版本进行维护。
6. 正式版本上软件任何修改都应有详细文档记录。
7. 发现错误及时修改,并且要记录下来。
8. 核心代码在汇编级跟踪。
9. 仔细设计并分析测试用例,使测试用例覆盖尽量多状况,以提高测试用例效率。
10. 尽量模仿出程序各种出错状况,对出错解决代码进行充分测试。
11. 仔细测试代码解决数据、变量边界状况。
12. 保存测试信息,以便分析、总结经验及进行更充分测试。
13. 不应通过“试”来解决问题,应寻找问题主线因素。
14. 对自动消失错误进行分析,弄清晰错误是如何消失。
15. 修改错误不但要治表,更要治本。
16. 测试时应设法使很少发生事件经常发生。
17. 明确模块或函数解决哪些事件,并使它们经常发生。
18. 坚持在编码阶段就对代码进行彻底单元测试,不要等后来测试工作来发现问题。
19. 去除代码运营随机性(如去掉无用数据、代码及尽量防止并注意函数中“内部寄存器”等),让函数运营成果可预测,并使浮现错误可再现。
附录A 某些编程惯用单词缩写
规则:较短单词可通过去掉“元音”形成缩写;较长单词可取单词头几种字母形成缩写;某些单词有人们公认缩写.
完整单词 可缩写为 缩写
A
average ------> avg ;
B
back ------> bk ;
background ------> bg ;
break ------> brk ;
buffer ------> buf ;
C
color ------> cr ;(clr)
control ------> ctrl ;
D
data ------> dat ;
delete ------> del ;
document ------> doc ;
E
edit ------> edt ;
error ------> err ;
escape ------> esc ;
F
flag ------> flg ;
form ------> frm ;
G
grid ------> grd ;
I
increment ------> inc ;
information -----> info ;
initial -----> init ;
insert ------> ins ;
image ------> img ;
L
label ------> lab ;
length ------> len ;
list ------> lst ;
library ------> lib ;
M
manager ------> mngr ;(mgr)
message ------> msg ;
O
Oracle ------> Ora ;
P
panorama ------> pano ;
password ------> pwd ;
picture ------> pic ;
point ------> pt ;
position ------> pos ;
print ------> prn ;
program ------> prg ;
S
server ------> srv ;
source ------> src ;
statistic ------> stat ;
string ------> str ;
Sybase ------> Syb ;
T
temp ------> tmp ;
text ------> txt ;
U
user ------> usr ;
W
window ------> wnd ;(win)
展开阅读全文