这是2010年写的一个规范给公司内部使用的。 PB毕竟是一个老语言了,命名规范和java,c# 差别很大
其实代码规范见仁见智吧,良好的书写规范对自己没坏处的,当然对公司也大大的有好处,毕竟谁看到写的乱糟糟的代码心里都不爽。 但是真正能按照规范写代码的人毕竟不是太多,特别特别是代码的注释,更特别特别的是修改注释。 在看到蛋疼代码有蛋碎感的同时,还有一种想爆粗口的念头, 想想别人看到咱们的代码会不会也有同样的感觉 , 所以大家尽量书写规范的代码 , 共勉。。。。
变量命名规范 (这样命名的变量很容易看明白 这是实例,全局还是局部,已经变量的类型,变量的意义 为修改代码带来方便)
变量作用域 + 变量类型 + _ + 变量意义说明串
一、变量作用域
全局变量 g_
共享变量 s_ //不推荐使用,共享变量不依赖于对象的实例存在
实例变量 i_
局部变量 l_
注意:四种作用域前缀字母都为小写
二、变量类型 (以局部变量为例)
数据类型 |
类型声明 |
前缀 |
整形 |
Integer |
li_ |
字符型 |
String |
ls_ |
日期 |
Date |
ld_ |
日期时间 |
DateTime |
ldt |
布尔 |
Boolean |
lb_ |
浮点 |
Decimal |
ldec_ |
Double |
Double |
ldou_ |
注意:以上是主要的数据类型 ,前缀都是小写
三、变量意义说明串
变量说明字符串可以有2中写法
- 推荐使用 英文字符串做说明串,每个单词的首字母都要大写, 如:ls_CheckedDate
- 在英文不好表达时 ,可以使用中文全拼代替,前两个中文汉字使用全拼,首字母大写,后面汉字使用全拼的首字母,都要大写 如: lb_DianJiLBTPX 点击列标题排序
可能有人会说用拼音不好,要用英文 。相对于用词霸翻译过来的英文我更只是用中文拼音。 其实pb也支持直接用中文 ,呵呵
四、变量声明
1. 变量类型使用全称,如:整类 使用Integer 而不是 Int
2. 变量类型首字母大写,其余字母全小写 如: String
3. 变量声明尽量不要在一行中声明太多变量,分行处理,在变量不多时可以每行声明一个变量
4. 变量名称要具有一定的实际意义 ,做到见其名知其意,在比较难理解时在变量后面添加必要的注释文字
程序注释 [可以使用pbhelper来辅助完成]
程序注释可分3种注释
- 函数、事件的说明注释 。 主要说明函数的作用,创建日期,创建人。 当然在修改时最好也好加上修改备注,时间,修改人。
- 一段程序的注释 。 这个主要是方便代码的查看。 写代码我更倾向于分段写好注释,然后插入代码,这样注释也就当做一个提纲 ,对代码的书写好处很大
注意:
- 代码注释是为了更好、更快捷的阅读代码,所以注释并不是越多越好,要有度,感觉很明了的东西就不要添加注释 ,对难懂代码添加必要的注释 。
- 原则上对代码的任何修改都要有注释 ,但是也是要注意具体情况 ,业务逻辑的更改和重大变更是必须有注释的
代码书写规范
1. 代码各层次使用 tab键缩进 ,差不多4个空格位置 , 注意缩进的美观,层次感,这样可以很好的辅助阅读代码,特别是多层If 、循环嵌套
形如: (见过一个200行左右的代码,很多 if ,else 怎么缩进的都有 ,找到if根本就找到那个end 是对应他的 ,这样的代码谁看谁难受)
If ls_Name = 'ABC' Then
MessageBox("恭喜" , "字符串相等了!" , Information! )
End If
2. 系统关键字 使用首字母大写的方式 如: If 、 For 、Update
3. 系统提供的函数也要各单词首字母大写 如: GetItemString() ,SetItemStatus()
4. 每个单词相隔一个空格 ,不要写的太紧密 ,有些情况为了美观可以由多个空格。
5. 事件或者函数中,有多行代码时 ,可以为多行代码进行分小组,使用一个空行,按照功能分不同的小块,使代码看起来有段落感 ,不要添加无谓的空行 ,也不要一下添多个空行 。
6. 程序中直接使用 Update ,Insert ,Delete SQL语句时,每个关键字右对齐,并且另起一行书写 ,且关键字首字母大写 ,形如:
Select user_name
Into :ls_MyName
From sys_users
Where id = 88888
注意 :不要把一个SQL语句放在一行中,以增加程序的可读性
7. 当一行代码很长时 ,需要使用换行书写的方式 ,使用换行连接符 & 。 一般情况下尽量不要让别人使用水平滚动条去看你的代码
8. 当一个事件或者函数中的代码过多时 ,超过百行 ,那么请考虑把处理逻辑分开成几个函数来处理 ,对函数进行必要的功能注释 ,增加阅读程序的效率。 形如:
-- 保存事件 的大致处理 ,很多时候写到一个事件里代码太长了 ,就分到几个事件/函数中。
-- 判断是否需要保存
Wf_Check_Changed()
-- 数据有效性检查
Wf_Check_Vai()
-- 保存数据
Wf_Update()
-- 保存后续处理
Wf_Post_Update()
-- 事物处理
Wf_Trans()