vb.net 程序设计规范

来源:互联网 发布:cms网站内容管理系统 编辑:程序博客网 时间:2024/04/28 09:02

前言
        说明性文件规范
        过程注释的规范
        函数的注释规范


命名规范
        设计规范:
 
前言:   1.设计规范的重要性:理由N多, 不在多述
            2. 本文适用性 :vb.net 开发 asp.net 开发
 
注释代码的目标:
       1.叙述清除]代码的作用(是做什么,而不是怎么做)
       2. 清楚说明代码所要表达的思想和逻辑
       3. 表明代码中的重要转折点
       4. 减少代码阅读者在他们大脑中模拟代码的运行
注意:注视应该说明代码的目的,而不要去叙述怎么完成目标的结构,要讲清为什么要那么做,而不是怎么去做
用特殊字符标识注释的作者:‘$      ‘@ 开头的行分别代表不同人写的注释代码
 
一. 说明性文件规范(写在每个.vb结尾的文件头,说明整个文件的功能)
1.1     以’----------------------------------开始和结尾
1.2   File name:    文件名
1.3   Author作者   Version版本:     Date及完成日期:
1.4   Description: 用于详细说明此程序文件完成的主要功能,与其他模块或函数的接口,输出值、取值范围、含义及参数间的控制、顺序、独立或依赖等关系
1.5   Others:       其它内容的说明
1.6   Function List:   主要函数列表,每条记录应包括函数名及功能简要说明
1.7   History: 修改历史记录列表,每条修改记录应包括修改日期、修改者及修改内容简述 
 
二.  过程注释的规范
2.1     以’----------------------------------开始和结尾
2.2     Description: 功能描述
2.3     Parameters :参数说明
2.4     Calls : 被本过程调用的函数或过程
2.5     Called By:    调用本过程的函数清单
2.6     Table Accessed: 被访问的表(此项仅对于牵扯到数据库操作的程序)
2.7     Table Updated: 被修改的表(此项仅对于牵扯到数据库操作的程序)
 
三.函数的注释规范
3.1    Function:     函数名称
3.2    Description:   函数功能、性能等的描述
3.3    Calls:         被本函数调用的函数清单
3.4    Called By:     调用本函数的函数清单
3.5    Table Accessed: // 被访问的表(此项仅对于牵扯到数据库操作的程序)
3.6    Table Updated: // 被修改的表(此项仅对于牵扯到数据库操作的程序)
3.7    Parameters:    // 输入参数说明,包括每个参数的作
                                   // 用、取值说明及参数间关系。
3.8    Return:          // 函数返回值的说明
 
四 命名规范
4.1   控件命名规范
 
      (1)普通控件
                       名称                          前缀                示例
                   adrotator                      adrt                adrtTopad
                   button                           btn                 btnSubmit
                   calendar                      cal                 calMeetingDates
                   CheckBox                    chk                 chkBlue
                   CheckBoxList             chkl                chkFavcolors
                   CompareValidator     valc                valcValidAge
                   CustomValidator        valx                valxDbcheck
                   DataGrid                      dgrd                dgrdTitles
                   DataList                       dlst                             dlstTiltles
                   DriopDownList           Drop                drop
                   Hyperlink                     link                   lnkDetails
                   Image                          img               imgAuntBetty
                   ImageButton              Ibtn                      ibtnSubmit
                   Label                           lbl                               lblResults
                   LinkButton                  lbtn
                   ListBox                        lst
                   Panel                           pnl
                   RadioButton               rad
                   RadopButtonList       radl
                   RangeValidator         valg
                   Regularexpression   vale
                   Repeater                     rpt
                   RequiredFieldValidator   valr
                   Table                                   tbl
                   TableCell                           tblc
                   TableRow                          tblr
                   TextBox                              txt
                   Validationsummary         vals
                   Xml                                     xmlc
       (2) ado.net 控件命名
                  connction                 con                   conNorthwind(con +数据库名称)
                  command                cmd                  cmdReturnProducts
                  Parameter               parm                 parmProductId
                  DataAdapter            dad                   dadProducts
                  DataReader            dtr                      dtrProducts
                  DataSet                    dst                    dstNorthwind
                  DataTable                dtbl                   dtblPrpducts
                  DataRow                  drow                 drowRow98
                  DataColumn           dcol                   dcolProductId
                  DataRelation           drel                   drelMasterDetaril
                  Dataview                  dvw                   dvwfilteredProducts
       (3)变量命名的目标:
              1. 使变量的用途明确
              2. 使每个变量的数据类型和可见范围清晰明了
              3. 使代码中的过程易于理解
              4. 使程序易于调试
              5. 使变量的存储和处理更为有效 

    4.2 变量和常数命名规范
                array                                      arr                          arrShoppingList
                Boolean                                bln                          blnIsPostBack
                Byte                                        byt                          bytpixelValue
                Char                                      chr                          chrDelimiter
                DateTime                             dtm                        dtmStartDate
                Decimal                                dec                        decAverageHeight
                Double                                  dbl                         dblSizeOfUniverse
                Interger                                 int                           intRowCounter
                Long                                      lng
               Object                                    obj
               Short                                      shr
               Single                                    sng
               String                                     str
 
    4.3 函数过程命名规范
         4.3.1统一的单词顺序::动词+名次
         4.3.2单词的首个字母大写并且名称应该能表达出它们的用途(或者说是意义)。
         4.3.3        参数需要指明ByVal还是ByRef(参数是按值传递还是按地址传递)
 
    4.4     类命名规范
            i.   以Class声明的类,都必须以名词或名词短语命名,体现类的作用
            ii. 当类是一个特性(Attribute)时,以Attribute结尾,当类是一个异常(Exception)时,以Exception结尾:
                 Class ColorSetException
                 Class CauseExceptionAttribute
            iii. 当类只需有一个对象实例(全局对象,比如Application等),必须以Class结尾,如
                  Class ScreenClass
                  Class SystemClass
            iv.   当类只用于作为其他类的基类,根据情况,以Base结尾:
                  MustInherit Class IndicatorBase
            v.  如果定义的类是一个窗体,那么名字的后面必须加后缀Form,如果是Web窗体,必须加后缀Page:
                  Class PrintForm : Inherits Form '* Windows窗体
                  Class StartPage : Inherits Page '* Web窗体
            vi. 模块不是类型,他的名称除了必须以名词命名外,必须加以后缀Module:
                 Module SharedFunctionsModule


五 设计规范:
      5.1对象取值赋给变量或者控件时需要判断对象是否为nothing 例:
                Ifnot Customer isNothingThen
                Else
                       ' Missing customer data is handled by the account and logon
                       pages
                EndIf
      5.2   在使用dataset 对象时 用有意义的常量代替无意义的值 例:
            正确的:   With Customer.Tables(CustomerData.CUSTOMERS_TABLE).Rows(0)
                                       TxtEmail.Text = CStr(.Item(CustomerData.EMAIL_FIELD))
                               EndWith
            错误的:   With Customer.Tables(0).Rows(0)
                                      TxtEmail.Text = CStr(.Item(0))
                                      TxtEmail.Text = CStr(.Item(“Email”))
                               EndWith
      5.3 取文本框数值的时候需要去除多余的空格例:
              tmpPassword = CountryTextBox.Text.Trim() 
      5.4       两层嵌套以上的 if else end if 考虑使用 select case 语句 例:
            错误的:if DataGrid1.Items(i).Cells(4).Text = "0" Then
                            ElseIf DataGrid1.Items(i).Cells(4).Text = "1" Then
                            ElseIf DataGrid1.Items(i).Cells(4).Text = "2" Then
                                     DataGrid1.Items(i).Cells(4).Text = "已培训"
                            End If
            正确的: select Case DataGrid1.Items(i).Cells(4).Text
                                 case “1”
                                 case “2”
                                 case “3”
                                 case Else 
                             end select
       5.5   Insert 语句的正确格式:Insert [into] TableName  (FieldName1,FieldName2),values( value1,value2) 
                                   错误的格式: Insert [into] TableName Values (value1, value2)
                方便表的扩充
       5.6 所有的操作要有快捷键,支持键盘操作
       5.7 用do……loop 循环代替 while…… end while 循环
       5.8不要用boolean表达式与ture 或false比较
                    不正确的用法:isEmptyRecordset= (rs.eof= ture) and( rst.eof=tuue)
                    正确的用法:   isEmptyRecordset= rs.eof and rst.eof
                                               if not (blnValidTemplate). Then
        5.9即使表达式不需要圆括号,为了逻辑清晰也要加上圆括号
        5.10 使用统一和直接明了的方式调用过程
                 调用sub过程要使用call 关键字(区别于没有返回值的函数调用)
                 不正确的用法 performWordMerge(strMergeFile)
                 正确的用法:call performWordMerge(strMergeFile)
        5.11 即使没有返回值的函数也要始终接受函数的返回值
        5.12使用return 返回函数值
                不正确地用法:priavire function myFunction () as Boolean
                                                     myFunction =true
                                            end sub
                正确地用法:priavire function myFunction () as Boolean
                                                     return true
                                                end sub 
        5.13常量的编程规则
                所有的常量前面加上前缀C_和范围指示符
                例如:过程中   const c_InterestRate=6
                            模块中(private)private Const mc_IntersRate=6
                            全局:    public Const gc_intersRate=5 
        5.14决不要用+做字符串的连接符,要使用&符号
        5.15用空白行把相关的语句分组
                    在 if …..then ,select case 结构每个循环体的前后插入空白行
                    在声明一组变量后,执行同一任务的语句组之后插入空白行
                    过程之间插入两个空白行
        5.16给每个过程定义一个明确的范围
               不正确地用法:sub disp;lay confiirmationmessage
                                           end sub
              正确地用法:public sub disp;lay confiirmationmessage
                                               end sub

原创粉丝点击