本文主要是介绍机房重构--代码规范学习,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
数据库设计已经完成了,这就进入编码的阶段了,在这之前为了保证这次写代码的规范性,花了一个多小时重温了米老师曾经给我们讲课时候讲的《编码规范》,在规范上的收获还是比较大的,毕竟第一次做这个系统的时候好多规范都没有遵循,而且更大的体会是对于未知领域的恐惧更少了,更加期盼着这个系统的进行,下面是我从中提取的比较重要的一些规范,希望对大家的编码能有所参考。
设置模块和过程
1、过程的名字不要使用缩写
• 如果你认为应用程序中的某些工程应该使用缩写,那么请将这些情况加上注释,并确保每个人在所有时间内都使用这些缩写。
• 决不要在某些过程中对某些单词进行缩写,而在别的过程中却不使用缩写。
2、为每个过程拥有单个退出点
• 创建单个退出点,可使过程更像是黑箱。代码的执行从一个门进来,代码的退出则从另一个门出去,因此产生的错误比较少,调试也不太难。
•创建单个退出点的操作是非常复杂的,但是它的好处是极大的。
•得到的好处大于你付出的努力,这种情况并不是总能碰到,因此务必充分利用它。
•解决这个问题的办法是在每个过程中创建一个PROC_EXIT标注。
•在这个标注下面,放入所有必要的清除代码和一个相应的Exit语句(Exit Sub、Exit Function和Exit Property)。
•每当你需要退出该过程时,只需加上一个GoTo PROC_Exit语句,而不必直接调用Exit命令。
3、当参数只接受较小的一组值时,请使用枚举值。
这期间还对如何将过程封装为模块进行了讲解,对于模块块,做到高内聚低耦合,其次就是给过程如何起名字,尽量可观性强一些。
命名规范
匈牙利命名法:它使用3字符前缀来表示数据类型和控件类型等……
现在给对象、变量、控件等命名尽量采用匈牙利命名法,前缀三个字符小写,中间的单词手写字母大写,也就是所谓的“驼峰式”命名法。但是对于标号的命名则要全部大写,这一点需要注意。。。
同时对于在命名时候缩写的规范,我的理解对于比较通用的而且很长的单词可以采用缩写,但是尽量少用,让阅读程序的人更加方便的知道变量的意思是什么。这一点结合着注释一起来理解就更好。
变量
创建和使用变量时,应该设法使每个变量服务于一个定义明确的目的。
人们希望变量能够服务于双重目的,但是它带来的节省少量内存的好处往往被代码的复杂性所抵消。
用于多个目的的变量称为无焦点的变量。
为变量赋予表义性强的名字
例如Dim i AsInteger
For i = 0To rstCustomers.Fields.Count- 1
Debug.Print rstCustomers.Fields(i).Name
Next i
和
Dim intIndexAs Integer
For intIndex = 0To rstCustomers.Fields.Count- 1
Debug.Print rstCustomers.Fields(intIndex).Name
Next intIndex
显然后者给人更强的可阅读性,对于命名时i和intIndex,后者几乎不用看注释就能够知道这个变量是干什么用的。
•即使你的代码永远不被其他人查看,也应该将它编写成可供几十个其他编程人员查看的样子。
–类似x、y和i这样的变量,在由故意缩短的变量名构成的代码很难理解和维护。现在已经没有站得住脚的理由采用这种做法了。
–这并不是说所有变量都应该使用很长的名字,你应该选用最有意义的名字,不管变量名是长是短。
•使用
–EmployeeAddress1、
–EmployeeAddress2
–SalesTotal
•这样的名字,其好处是很明显的,这些名字比简化了的名字更具表义性。
使用统一的量词
•可能一些变量,用于跟踪一组变量中的第一个项目和最后一个项目。
•在这种情况下,应该在变量名的结尾使用一个标准化量词。
•通过在结尾处放置一个量词,就可以创建更加统一的变量,它们更加容易理解,也更容易搜索。
•不正确:
DimstrFirstCustomer As String
DimstrLastCustomer As String
DimstrPreviousCustomer As String
•正确:
DimstrCustomerFirst As String
DimstrCustomerLast As String
DimstrCustomerPreviousAs String
用精心选择的数据类型说明变量:
• Visual Basic为变量提供了许多不同的数据类型,在给定的情况下常常可以使用多个数据类型。
• 为每个变量选择最佳的数据类型,就能减少对内存的需求量,加快代码的执行速度,降低出错的可能性。
另外,不同的数据类型有着不同的资源需求,并且用于变量的数据类型可能会影响根据该变量进行计算所产生的结果。
• 若要存储任何类型的文本,请使用S t r i n g数据类型。
– 这种数据类型可以包含任何有效的键盘字符,包括数字和非字母字符
• 如果只要存放True和False这两个值,请使用Boolean数据类型。
• 若要存放不包含小数位、大于或等于-32768、小于或等于32767的数字,请使用Integer数据类型。
• 若要存放不带小数位的数字,但是数字值大于或小于Integer数据类型允许的值,请使用Long数据类型
• 若要存放包含小数位的数字,请使用Single数据类型。
– 除非你编写极其复杂的数学应用程序,需要极大的数字或者近似0的数字,否则,Single数据类型几乎适用于存放包含小数的所有值。
• 如果需要存放的数字大于Single数据类型能够存放的数字,则请使用Double数据类型。
• 若要存放美元金额,请使用C u r r e n c y数据类型。
– 该数据类型使用固定的4位小数。不过,除非指定显示4位小数的值,否则当你显示该值时,它只显示两位小数。
• 若要存放日期或时间值,请使用D a t e数据类型。
– 例如,如果存放的值是7/22/1997,Visual Basic将不把它作为简单的文本字符串来处理,它知道这代表1 9 9 7年7月2 2日。
• 如果可能,每行只说明一个变量。
• 不正确:
DimintAge As Integer, strName As String, strAddress AsString
• 正确:
DimintAge As Integer
DimstrName As String
DimstrAddress As String
对于不同的数据变量用什么样的类型去定义和变量的命名是这块我觉得最为重要的。
注释
用注释来说明何时可能出错和为什么出错
•由于VisualBasic所具有的性质,有些错误是不可避免的,而另一些错误则是绝对必要的。
–例如,你决定在保存新记录之前不查看数据库中是否已经存在记录(以避免创建副本),这样就能更快地保存该记录,并且,如果该记录是个副本,就可以捕获该错误。
注释书写规范:
•(1) 使用完整的语句。
–虽然不必将注释分成段落(最好也不要分成段落),但是你应该尽量将注释写成完整的句子。
•(2) 避免使用缩写。
•(3) 将整个单词大写,以突出它们的重要性。
–若要使人们注意注释中的一个或多个单词,请全部使用大写字母。
对注释进行缩进,使之与后随的语句对齐:
•注释通常位于它们要说明的代码的前面。
–为了从视觉上突出注释与它的代码之间的关系,请将注释缩进,使之与代码处于同一个层次上。
•注释不是代码的附属品,它与代码是共存的关系。
为每个过程赋予一个注释标头:
•每个过程都应该有一个注释标头。
–过程的注释标头可以包含多个文字项,比如输入参数、返回值、原始作者、最后编辑该过程的程序员、上次修改日期、版权信息,甚至包括程序员喜欢的颜色。
•过程的所有注释标头都应该采用相同的格式化方法,每种信息应该与其他信息明确区分开来。
使用内部注释来说明代码进程:
•内部注释是最常用和最重要的注释。
•使用内部注释可以说明过程的实现方法,使读者能够顺利通过各个不同的转折。
•(1) 在每个I f语句的前面加上注释。
•I f语句用于作出对程序执行流产生影响的判断。在代码中的每个I f语句前面加上注释。
•(2) 在每个Select Case语句前面加上注释。
•与I f语句一样,SelectCase语句用于评估对程序执行流产生影响的表达式。它们常常比I f语句更加复杂。你应该对Select Case语句加上透彻的注释。
•(3) 在每个循环(包括F o r. . . N e x t循环和D o循环)的前面加上注释。
•每个循环都有它的作用,许多情况下这个作用并不清楚直观。无论循环的复杂程序如何,都应该在它的前面加上一个注释来详细说明它的作用。
•(4) 在修改了全局变量的每个语句前面加上注释。
•如果非常需要使用全局变量,请说明你为何要修改它。这将使代码的调试容易一些。
用行尾注释来说明变量
界面的设计
界面设计必须保持一致
快捷键的使用以及一致性
这些就是今天对于代码规范性的学习后的收获,基本上这次重构的时候这些都能用得上了,编码的规范在这次实战中必须要做的正正规规的,这也是走向职业化的一次历练,加油,通过这次对编码规则的重温,更多的是减少对写代码的恐惧已经编代码时候犹豫不决的顾虑,That is all.
这篇关于机房重构--代码规范学习的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!