当前位置:

首页 > 编程开发 > VB编程的八个优良习惯第1/2页

VB编程的八个优良习惯第1/2页

使用“&”替代“+”进行字符串拼接可避免类型歧义;变量命名应遵循语义化原则并注意大小写与缩进;控件和对象采用统一前缀命名,如cmd、txt等;变量应定义在最小作用域内,避免滥用全局变量,并提倡模块化代码组织。这些习惯能显著提升代码的可读性与维护性。

本文目录

    在VB的世界里摸爬滚打久了,你会发现很多所谓的“技巧”,其实最后都沉淀为一些最基本、最不起眼的习惯。这些习惯看似简单,却直接决定了代码的可读性、维护性,甚至是你自己的编码效率。今天,我们就来聊聊八个值得养成的VB编程习惯。

    先列出几个核心判断:用对连接符、规范命名、善用内置函数、以及结构化的代码组织——这些都不是什么高深莫测的学问,但真正做到位了,写的代码会让人感觉判若两人。

    1. “&”替换“+”

    很多开发者习惯用“+”来拼接字符串,这其实是个不小的隐患。问题在于,“+”在VB中同时承担着算术加法和字符串连接的双重角色,容易引发类型歧义和运行时错误。真正的好习惯是什么?用“&”。理由很简单:专职专用。“&”就是为字符串连接而生的操作符,它会让你的意图更加明确。

    不推荐:

    Dim sMessage As String
    sMessage = “1” + “2”
    

    推荐:

    Dim sMessage As String
    sMessage = “1” & “2”
    

    顺便提一句,“&”后面记得跟一个空格,这是编码风格的基本素养。

    2. 变量命名大小写,语句错落有秩

    代码不仅仅是写给机器看的,更是写给人看的。这一点,在维护老项目时体会尤其深。下面这两段代码逻辑完全一样,但阅读难度天差地别:

    读懂难度很大的代码:

    Dim SNAME As String
    Dim NTURN As Integer
    
    If NTURN = 0 Then
    If SNAME = “vbeden” Then
    Do While NTURN < 4
    NTURN = NTURN + 1
    Loop
    End If
    End If
    

    容易读懂的代码:

    Dim sName As String
    Dim nTurn As Integer
    
    If nTurn = 0 Then
       If sName = “vbeden” Then
          Do While nTurn < 4
             nTurn = nTurn + 1
          Loop
       End If
    End If
    

    差别在哪里?核心有两处:一是变量命名遵循了语义化原则(sName、nTurn),一看就知道是什么;二是代码缩进层次清晰,逻辑嵌套一目了然。这样的代码,几个月后你自己回头看,也不会觉得陌生。

    3. 对象命名约定

    给控件和对象起名字,看似小事,实则关乎大局。这里推荐一套经过实践检验的前缀命名约定,能让代码的自解释性大幅提升。

    推荐使用的控件前缀:

    • 3D Panel:pnl(例:pnlGroup)
    • ADO Data:ado(例:adoBiblio)
    • Animated button:ani(例:aniMailBox)
    • Check box:chk(例:chkReadOnly)
    • Combo box, drop-down list box:cbo(例:cboEnglish)
    • Command button:cmd(例:cmdExit)
    • Common dialog:dlg(例:dlgFileOpen)
    • Communications:com(例:comFax)
    • Control(当特定类型未知时):ctr(例:ctrCurrent)
    • Data:dat(例:datBiblio)
    • Data-bound combo box:dbcbo(例:dbcboLanguage)
    • Data-bound grid:dbgrd(例:dbgrdQueryResult)
    • Data-bound list box:dblst(例:dblstJobType)
    • Data combo:dbc(例:dbcAuthor)
    • Data grid:dgd(例:dgdTitles)
    • Data list:dbl(例:dblPublisher)
    • Data repeater:drp(例:drpLocation)
    • Date picker:dtp(例:dtpPublished)
    • Directory list box:dir(例:dirSource)
    • Drive list box:drv(例:drvTarget)
    • File list box:fil(例:filSource)
    • Flat scroll bar:fsb(例:fsbMove)
    • Form:frm(例:frmEntry)
    • Frame:fra(例:fraLanguage)
    • Gauge:gau(例:gauStatus)
    • Graph:gra(例:graRevenue)
    • Grid:grd(例:grdPrices)
    • Hierarchical flexgrid:flex(例:flexOrders)
    • Horizontal scroll bar:hsb(例:hsbVolume)
    • Image:img(例:imgIcon)
    • Image combo:imgcbo(例:imgcboProduct)
    • ImageList:ils(例:ilsAllIcons)
    • Label:lbl(例:lblHelpMessage)
    • Lightweight check box:lwchk(例:lwchkArchive)
    • Lightweight combo box:lwcbo(例:lwcboGerman)
    • Lightweight command button:lwcmd(例:lwcmdRemove)
    • Lightweight frame:lwfra(例:lwfraSa veOptions)
    • Lightweight horizontal scroll bar:lwhsb(例:lwhsbVolume)
    • Lightweight list box:lwlst(例:lwlstCostCenters)
    • Lightweight option button:lwopt(例:lwoptIncomeLevel)
    • Lightweight text box:lwtxt(例:lwoptStreet)
    • Lightweight vertical scroll bar:lwvsb(例:lwvsbYear)
    • Line:lin(例:linVertical)
    • List box:lst(例:lstPolicyCodes)
    • ListView:lvw(例:lvwHeadings)
    • MAPI message:mpm(例:mpmSentMessage)
    • MAPI session:mps(例:mpsSession)
    • MCI:mci(例:mciVideo)
    • Menu:mnu(例:mnuFileOpen)
    • Month view:mvw(例:mvwPeriod)
    • MS Chart:ch(例:chSalesbyRegion)
    • MS Flex grid:msg(例:msgClients)
    • MS Tab:mst(例:mstFirst)
    • OLE container:ole(例:oleWorksheet)
    • Option button:opt(例:optGender)
    • Picture box:pic(例:picVGA)
    • Picture clip:clp(例:clpToolbar)
    • ProgressBar:prg(例:prgLoadFile)
    • Remote Data:rd(例:rdTitles)
    • RichTextBox:rtf(例:rtfReport)
    • Shape:shp(例:shpCircle)
    • Slider:sld(例:sldScale)
    • Spin:spn(例:spnPages)
    • StatusBar:sta(例:staDateTime)
    • SysInfo:sys(例:sysMonitor)
    • TabStrip:tab(例:tabOptions)
    • Text box:txt(例:txtLastName)
    • Timer:tmr(例:tmrAlarm)
    • Toolbar:tlb(例:tlbActions)
    • TreeView:tre(例:treOrganization)
    • UpDown:upd(例:updDirection)
    • Vertical scroll bar:vsb(例:vsbRate)

    数据访问对象 (DAO) 的前缀:

    • Container:con(例:conReports)
    • Database:db(例:dbAccounts)
    • DBEngine:dbe(例:dbeJet)
    • Document:doc(例:docSalesReport)
    • Field:fld(例:fldAddress)
    • Group:grp(例:grpFinance)
    • Index:ix(例:idxAge)
    • Parameter:prm(例:prmJobCode)
    • QueryDef:qry(例:qrySalesByRegion)
    • Recordset:rec(例:recForecast)
    • Relation:rel(例:relEmployeeDept)
    • TableDef:tbd(例:tbdCustomers)
    • User:usr(例:usrNew)
    • Workspace:wsp(例:wspMine)

    推荐使用的菜单前缀:

    菜单控件的命名比较特殊。除了最前面的“mnu”标记以外,建议对每一级嵌套增加一个附加前缀,将最终的菜单标题放在名称的最后。这样可以清晰地反映菜单的层级关系。

    • File Open:mnuFileOpen
    • File Send Email:mnuFileSendEmail
    • File Send Fax:mnuFileSendFax
    • Format Character:mnuFormatCharacter
    • Help Contents:mnuHelpContents

    这种命名方式的好处是,在Visual Basic的“属性”窗口中,同一菜单组的所有成员会整齐地排列在一起,一目了然。

    常量和变量命名约定:

    变量应该始终被定义在尽可能小的范围内。全局变量容易导致状态复杂,逻辑混乱,也让代码的重用和维护变得更加困难。在VB中,变量可以有以下范围:

    • 过程级:在过程、子过程或函数过程中用‘Private’声明,只在声明它的过程中可见。
    • 模块级:在窗体或代码模块的声明部分用‘Private’声明,在模块内的每一个过程中可见。
    • 全局:在代码模块的声明部分用‘Public’声明,在整个应用程序中可见。

    在VB应用程序中,只有当没有其他方便途径在窗体之间共享数据时,才考虑使用全局变量。如果必须使用,建议在一个单一模块中声明它们,并按功能分组,给这个模块取一个有意义的名称,比如Public.bas。

    还有一个好习惯:尽可能写模块化的代码。比如,如果应用程序需要显示一个对话框,就把完成这一任务所需的所有控件和代码放在单一的窗体中。这样有助于将代码组织成有用的组件,同时减小运行时的开销。

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发
    下一篇: VB XMLHTTP使用方法
    相关文章 更多
    VB中判断空的几种方法(Null, Missing, Empty, Nothing, vbNullString)
    VB中判断空的几种方法(Null, Missing, Empty, Nothing, vbNullString)

    VB6 里有几个特别容易让人迷糊的“特殊值”——Null、Missing、Empty、Nothing、vbNullString。除了最后一个,其他几个都不能直接用 a = 值 这种方式来判断。下面咱们逐个拆解,理清楚它们到底是怎么回事。 1、Null Null 代表“空值”,本质上是一个不合法的数据

    Windows 10 x64 安装 Visual Basic 6.0 SP6注意事项
    Windows 10 x64 安装 Visual Basic 6.0 SP6注意事项

    在Windows 10 x64上安装Visual Basic 6.0 SP6,绝对是个让人头疼的活儿。折腾了两天才搞定,把遇到的坑和解决方法整理出来,希望能帮到正在挣扎的朋友。 先说几个前置条件:Windows 7 x64和Windows 8 x64理论上都能装,不过下面这些经验主要基于Win10

    VB中使用WMI获取系统硬件和软件有关信息
    VB中使用WMI获取系统硬件和软件有关信息

    WMI是Windows管理接口,支持本地及远程获取软硬件信息。VB中需引用MicrosoftWMIScriptingV1.1库,通过Win32_类如SoundDevice、VideoController等查询声卡、显卡、内存及操作系统详情。该技术广泛用于系统监控与配置。

    在VB中遍历文件并用正则表达式完成复制及vb实现重命名、拷贝文件夹的方法
    在VB中遍历文件并用正则表达式完成复制及vb实现重命名、拷贝文件夹的方法

    在VB开发中,利用FSO对象和正则表达式可实现文件按规则复制,如将文件名含“1项目”或“一项目”的文件复制到目标目录;同时也可实现文件夹重命名与拷贝,代码结构清晰,可直接套用或微调。

    VB FileSystemObject对象实例详解
    VB FileSystemObject对象实例详解

    FileSystemObject是ASP开发中操作服务器文件系统的核心对象,提供Drives属性及二十多种方法,可创建、读取、修改、删除文件和文件夹,并支持驱动器、路径处理及文件对象属性与方法的调用,功能全面且易于使用。

    VB关机恶搞小程序
    VB关机恶搞小程序

    基于VB的恶搞关机小程序利用系统命令或API触发强制关机,并通过注册表或启动文件夹实现自启动。交互版添加对话框要求输入“我是猪”取消关机,同时拦截关闭事件进行自我保护。核心涉及关机触发与自启动机制。

    VB实现的《QQ美女找茬游戏》实例
    VB实现的《QQ美女找茬游戏》实例

    一个基于VB的自动找茬程序,通过API截取屏幕两幅图片,逐像素对比其RGB分量,差值超过30时标记为差异点,并在窗体上绘制结果。程序将窗口设为总在最前,点击触发分析,实现快速自动找茬。

    VB实现按行读取文本文件的方法
    VB实现按行读取文本文件的方法

    VB中使用LineInput语句与FreeFile函数逐行读取文本文件,避免一次性加载大文件造成内存溢出。每行读取后可进行拼接、解析等处理,操作完毕必须关闭文件以释放系统资源。

    VB键盘鼠标无动作调用程序的尝试
    VB键盘鼠标无动作调用程序的尝试

    实现键盘鼠标无动作时调用程序,曾尝试HOOK钩子与Windows屏保检测均失败。最终用GetLastInputInfo函数获取系统空闲时间,成功触发操作,例如空闲15分钟弹出关机提示。

    VB实现禁用任务管理器的方法
    VB实现禁用任务管理器的方法

    在WindowsXP系统中,通过二进制流占用任务管理器可执行文件即可禁用任务管理器,使其无法被用户启动;而在Vista及Windows7系统中,则需要改用任务终止命令强制结束进程,并将该命令置于定时器事件中循环执行,从而持续阻止任务管理器重新启动,最终实现对任务管理器的长期禁用。这一方法通过占用文件。

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。