VB程序编程风格谈
?牐牨喑痰墓讨校颐怯ψ袷匾恍┏晌牡幕虿怀晌牡谋曜肌K淙徽庑┍曜级杂诔绦蛟诩扑慊系脑诵幸庖宀淮螅杂谖颐堑难?习交流却意义深远。也就是说,这些准则没有对程序的逻辑结构做出硬性规定,但对程序的外观却提出了规范化的要求。
?牐犑褂猛骋槐嗦朐级?集的主要原因,是使应用程序的结构和编码风格标准化,以便于阅读和理解。好的编码可使源代码的可读性强且意义清楚,与其他语言约定相一致,并且尽可能直观。我们自己一眼能看出个大概,在别人眼中也不至于成为千古奇书。
?牐燰B编程过程中,主要有如下约定。
#1 一、对象命名约定
?牐犛Ω檬褂靡恢碌那白豪疵韵螅谷嗣侨菀资侗鸲韵蟮睦嘈汀@缥颐浅S每丶﨏ommandButton(命令按钮)可用cmd做为其前缀。与之似,Form以frm,Image以img,Label以lbl,List Box以lst,Picture Box以pic,Timer以tmr做为前缀是很方便区分的。在我们编程的过程中,我们看到下面的名称cmdExit我们就知道这一定是一个命令按钮了。如果是第三方提供的控件,我们的说明最好要清晰地标出制造商的名称,以区别于我们的常用控件。
#1 二、常量和变量命名约定
?牐牫丝丶酝猓A亢捅淞恳彩俏颐潜喑坦讨芯S龅降模颐且彩峭ü趾退谴蚪坏赖摹?
#2?牐?1.给变量加范围前缀
?牐牨淞堪雌渥饔梅段Э煞肿鋈啵碳叮?榧逗腿郑晕颐窃诒喑痰墓讨杏?将三者加以区别。
?牐犖颐窃谑褂帽淞渴保烁玫靥逑执胫赜煤涂晌ぴ颍涠ㄒ宸段в?尽量缩小,这样将使我们的应用程序更加容易理解和易于控制。
?牐犜赩B应用程序中,只有当没有其他方便途径在窗体间共享数据时才使用全局变量。当使用全局变量时,在一个单一模块中声明它们,并按功能分组,给模块取一个有意义的名字。较好的编码习惯是尽可能地用模块化的代码。除了全局变量,过程和函数应该仅对传递给它们的的对象操作。在过程中使用的全局变量应该在过程起始处的声明部分标识出来。
?牐牨淞康淖饔梅段?前缀如下:全局g(global),模块级m(model),本地过程不需要使用。例如:gintFlag表示全局整型变量,mstrPassword可表示模块级字符型变量。
#2?牐?2.声明所有变量原则
?牐犐魉斜淞拷峤谑”喑淌奔洌氪砦蠼蟠蠹跎伲颐强稍诔绦蚩夹瓷先缦掠锞洌?
?牐燨ption Explicit
?牐牳糜锞湟笤诔绦蛑猩魉斜淞俊?
#2?牐?3.变量数据类型声明
?牐牽赏ü旅娴那白豪醋魑淞康氖堇啾曛尽?
?牐燘oolean bln
?牐燘yte byt
?牐燚ouble dbl
?牐營nteger int
?牐燬tring str
#2?牐?4.常量
?牐牫A康拿勺裱氤A棵筇逑嗤脑颉?
#2?牐?5.对变量和过程名作出描述
?牐牨淞炕蚬堂闹魈逵Ω檬褂么笮⌒椿旌系男问剑⑶矣Ω糜凶愎怀ざ纫悦枋鏊淖饔谩6遥σ砸桓龆士罚鏙udgeDialog。
#1 三、结构化编码约定
?牐牫松鲜龅脑级ㄍ猓峁够某绦蚍绺穸杂谖颐鞘导时喑桃埠苡幸庖澹杉蟮馗纳拼氲目啥列浴=峁够嗦朐级ㄖ饕写胱⑹秃鸵恢滦运踅?
#2?牐?1.代码注释约定
?牐犓械墓毯秃加Ω靡悦枋稣舛喂痰墓δ艿囊欢渭蛎鞯淖⑹涂迹得鞲贸绦蚴歉墒裁吹模劣谑侨绾巫龅模簿褪潜喑痰南附冢詈貌灰āR蛭蘸笪颐强赡芤薷某绦颍庋龌岽床槐匾淖⑹臀すぷ鳎绻恍薷模徒峁┪蟮夹畔ⅲ赡艹晌砦蟮淖⑹停蛭氡旧砗秃竺娉绦蛑械淖⑹徒鸬较嘤Φ乃得髯饔谩?
?牐牴讨械淖⑹涂橛Ω冒ㄈ缦卤晏猓?
?牐犘〗? 描述内容
?牐犇康? 该过程完成什么
?牐牸偕? 列出每个外部变量、控件、打开文件或其他不明显元素
?牐犘Ч? 列出每个被影响的外部变量、控件或文件及其作用(只有当它不明显时)
?牐犑淙? 每一个可能不明显的参数
?牐牱祷? 函数返回值的说明
#2?牐?2.格式化代码
?牐犗旅媸荲B中的计算器示例的一部分,从中我们不难看出格式化代码的约定。
?牐牐?1)标准的,基于制表位的嵌套应该包括一个嵌注释,用来描述该变量的使用。
?牐牐?2)变量、控件及过程的命名应该足够清楚,使得只有复杂的执行细节才需要嵌入注释。
?牐牐?3).bas 模块包含工程的VB一般常量声明,在其起始处,应包括程序的综述,列举主要数据对象,过程、算法、对话、数据库及系统需求。
?牐燨ption Explicit
?牐燚im Op1,Op2 '预先输入操作数。
?牐燚im DecimalFlag As Integer '小数点存在吗?
?牐燚im NumOps As Integer '操作数个数。
?牐燚im LastInput '指示上一次按键事件的类型。
?牐燚im OpFlag '指示未完成的操作。
?牐燚im TempReadout
?牐牐?小数点(.)按钮的 Click 事件过程
?牐牐?如果上一次按键为运算符,初始化 readout 为 “0.”;
?牐牐Х裨蛳允臼弊芳右桓鲂∈恪?
?牐燩rivate Sub Decimal_Click()
?牐營f LastInput = “NEG” Then
?牐燫eadout = Format(0,“-0.”)
?牐燛lseIf LastInput <> “NUMS” Then
?牐燫eadout = Format(0,“0.”)
?牐燛nd If
?牐燚ecimalFlag = True
?牐燣astInput = “NUMS”
?牐燛nd Sub
?牐犘闯绦蚝妥鋈艘谎獗硪彩欠浅V匾模俏颐墙涣髦胁豢扇鄙俚亩鳌R陨暇槎云渌喑逃镅酝视茫M芏猿跹д叩哪阌兴镏?