给项目组写的VB6编码规范
----
VB6编码规范
为了便于维护和开发,以及后续的维护人员少走弯路,制订此编码规范。
本规范为娱乐版规范。
在阅读编码规范之前,先思考下面几个问题,如果不知道答案,请上网搜索,这样有助
于加深记忆
1. Dim i, j, k As Integer和Dim i As Interger, j As Interger, k As Interger有
何区别?
2. Option Explicit的含义是什么?
3. Sub和Function的区别?
4. 在一个模块(Modula)中,Dim、Private、Public申明的变量有何区别?
5. 什么情况下使用属性Property?
VB6规范正式出场:
1. Dim i, j, k, l As Integer
k说:我有2个爱好
一是和其他变量站在同一行
二是穿上variant的外套,逢人就问“猜猜我是谁”
ps:每行只申明一个变量
2. Mid$与Mid。这是一对孪生兄弟,返回值的类型不同。虽然有人说Mid$比Mid快,但
实际的速度差不多。另外,考虑到VB代码升级到VB.NET的过程中,VB和VB.NET代码会共
存一段时间,不带$的版本更便于代码比较。所以使用Mid这种不带$的版本即可。
3. Dim f as Form
f=new Form1
f.DoWork
f=new Form2
f.DoOtherWork
f说:f1, f2,傻傻分不清楚,其实我像F4
ps:定义变量时,尽量使用明确的类型
4. Option Explicit大叔说:查户口,查户口,没有户口的都去昌平挖沙子;但是微软
不让我主动出击,你请我查户口,我才查户口
ps:在每个文件的开头,写上“Option Explicit”
或者Tools->Option->Editor->Require Variable Declaration 前面打勾
5. Function foo()
If ... Then
Function = CInt(1)
Else If ...
Function = "I'm a String"
Else If ...
...
End If
End Function
foo说:Jolin的《看我72变》是从我这里获取的灵感,至于你们信不信,我反
正是信了。不信的话,我变给你看
ps:有返回值的函数,要明确定义返回值的类型
6. Sub说:Hi,我是Function 72变之一,我最大的特点是吃葡萄不吐葡萄皮
ps:没有返回值的函数,使用Sub进行定义
7. sql语句较长,需要分开写在多行时,每行的开头和结尾都加一个空格,以减少出
错,如" select * from "
8. sql="select * from table where name=" & userName
数据库说:缓存一直被刷新,从未被使用。要想快,请走VIP通道。
黑客说:连SQL注入都不能防范的代码,是对我的能力的侮辱。
ps:sql语句中的变量,尽量使用参数化的方式,而不要直接拼字符串——无
论从性能的角度,还是安全的角度
9. 不要重复发明轮子。需要实现一个功能之前,先查找现有的代码
10. 将经常用到的功能写成模块,提高程序的通用性和易维护性
工具:
夫欲善其事,必先利其器。好的工具,会极大地提高工作效率,省下来的时间上微博挖
8g多好
1. 安装VB6 SP6
2. 安装CodeSMART 2009。
VB6会自动改变变量的大小写,所以,务必使用以下流程:
1. 备份代码
2. 编写代码、修改bug
3. 用CodeSmart的Review功能检查代码
4. 用Beyond Compare比较代码,将VB6自动改变大小写的变量改回来
5. 提交代码到CVS、SVN、CC等代码管理服务器上
参考资料:
VB6 编码规范
http://www.360doc.com/content/06/0822/10/6002_187392.shtml
http://www.bianceng.cn/VBjc/jyjq/jy1.htm
VB6 SP6
http://www.microsoft.com/downloads/zh-cn/details.aspx?FamilyID=9ef9bf70-
dfe1-42a1-a4c8-39718c7e381d&DisplayLang=zh-cn
VB6 SP6累积更新
http://support.microsoft.com/kb/957924/en-us
CodeSMART功能介绍
http://www.axtools.com/products-codesmart-vb6.php
使用绑定变量的方法(Oracle SQL共享的机制)
http://blog.csdn.net/yspoplar/article/details/5904644