当前位置:

首页 > 编程开发 > 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。

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

本文内容来源于互联网,如有侵权请联系删除。
作者最新文章
编程开发
相关文章 更多
using namespace 使用中遇到的问题怎么解决
using namespace 使用中遇到的问题怎么解决

命名空间的基本概念与常见引入问题在C++等编程语言中,命名空间(namespace)是一种将代码标识符(如变量、函数、类名)封装在特定名称下的机制,其主要目的是避免命名冲突,尤其是在大型项目或使用多个第三方库时。使用“using namespace”指令可以将指定命名空间中的所有名称引入当前作用域,

c语言函数递归 实操经验总结:这些技巧很实用
c语言函数递归 实操经验总结:这些技巧很实用

理解递归的基本原理在C语言中,递归是一种函数调用自身的编程技术。要掌握它,首先需要理解其核心思想:将一个复杂的大问题,分解为一个或几个与原问题相似但规模更小的子问题,直到子问题足够简单,可以直接求解。这个过程通常包含两个关键部分:递归出口和递归体。递归出口定义了问题何时不再继续分解,即最简单、可直接

c语言函数递归 怎么选?常见方案对比分析
c语言函数递归 怎么选?常见方案对比分析

递归函数的基本概念与适用场景在C语言编程中,递归是一种函数调用自身的编程技巧。它并非适用于所有问题,但在处理某些具有自相似结构的问题时,能提供极其清晰和优雅的解决方案。递归的核心思想是将一个大规模问题分解为一个或多个同类型但规模更小的子问题,直到子问题简单到可以直接求解。典型的适用场景包括树形结构的

Objective-C 内存管理入门:从 alloc 到 dealloc 的生命周期详解
Objective-C 内存管理入门:从 alloc 到 dealloc 的生命周期详解

理解内存管理的基石在Objective-C的编程世界中,内存管理是开发者必须掌握的核心技能之一。它直接关系到应用的性能、稳定性与资源利用效率。与一些采用自动垃圾回收机制的语言不同,Objective-C在很长一段时间里,依赖一套基于引用计数的、需要开发者部分介入的管理规则。这套规则的核心思想是明确的

如何正确使用 dealloc 以避免 iOS 应用中的内存泄漏
如何正确使用 dealloc 以避免 iOS 应用中的内存泄漏

理解 dealloc 的角色与时机在 iOS 应用开发中,内存管理是保障应用性能与稳定性的基石。dealloc 方法是 Objective-C 中对象生命周期结束时的关键回调,它标志着对象即将被系统回收内存。正确理解其触发时机至关重要:当一个对象的引用计数降为零时,运行时系统会自动调用该对象的 de

深入理解 Objective-C 中的 dealloc 方法:内存管理核心机制
深入理解 Objective-C 中的 dealloc 方法:内存管理核心机制

内存管理的基石在Objective-C的世界里,内存管理是开发者必须掌握的核心技能之一。作为一门在手动引用计数(MRC)时代诞生的语言,Objective-C要求程序员对对象的生命周期有清晰的认识。dealloc方法正是这一生命周期中至关重要的终点站。它是一个实例方法,当对象的引用计数降为零时,系统

理解 native2ascii:Java 国际化开发中的字符编码工具
理解 native2ascii:Java 国际化开发中的字符编码工具

native2ascii 工具的基本定位在Ja va应用程序的国际化与本地化开发过程中,处理非拉丁字符集是一个常见且关键的环节。Ja va内部使用Unicode字符集来统一表示全球各种语言的文字,但其属性文件(.properties)在历史上要求使用ASCII编码,或者更准确地说,要求非ASCII字

如何使用 native2ascii 转换中文字符为 Unicode 转义序列
如何使用 native2ascii 转换中文字符为 Unicode 转义序列

理解 native2ascii 工具的基本用途在软件开发,特别是涉及国际化处理的场景中,开发者常常需要处理不同编码的文本资源。native2ascii 是 Ja va 开发工具包(JDK)中提供的一个命令行实用程序,其主要功能是将包含本地字符编码(非ASCII字符)的文件,转换为包含 Unicode

Java native2ascii 命令详解:解决属性文件乱码问题
Java native2ascii 命令详解:解决属性文件乱码问题

native2ascii 命令的由来与作用在Ja va开发中,处理国际化资源文件是一个常见需求。资源文件通常以.properties格式存储,用于支持多语言界面。然而,Ja va属性文件默认采用ISO-8859-1字符集编码,这导致了一个直接的问题:当文件中包含非拉丁字符(如中文、日文、韩文等)时,

一个 memwatch 实战案例:定位野指针问题
一个 memwatch 实战案例:定位野指针问题

内存监控工具的价值与挑战在软件开发,尤其是使用C/C++这类手动管理内存的语言时,内存错误是程序员最常遭遇的难题之一。其中,野指针问题因其隐蔽性和破坏性,往往成为最难定位的“幽灵”缺陷。它可能潜伏在代码中,在特定条件下才被触发,导致程序崩溃、数据损坏或难以预测的行为。传统的调试手段,如打印日志或使用

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

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

Windows
Windows

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

macOS软件
macOS软件

正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

Mac软件 更多
灵活计算器
灵活计算器
macOS/iOS/Android

灵活计算器是一款笔记式算数应用,支持实时计算、动态关联和云端同步功能。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

赤友清理大师
赤友清理大师
macOS

赤友清理大师是一款为 Mac 设计的智能清理优化工具,可精准扫描垃圾、大文件、重复文件等,释放磁盘空间。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

极度公式
极度公式
Windows/macOS/Linux

极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

WINDOWS 更多
Windows 10
Windows 10
Windows

Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。

极度公式
极度公式
Windows/macOS/Linux

极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

密码键盘
密码键盘
Windows/macOS/iOS/Android

密码键盘是一款兼具安全性与便捷性的高效密码管理器。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。