引言:Kent Beck 曾经说过“我只是个更注重的程序规范的程序员而已”

程序|程序员|规范

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 例:

If not Customer is Nothing Then

Else

' Missing customer data is handled by the account and logon pages

End If

5.2 在使用dataset 对象时 用有意义的常量代替无意义的值 例:

正确的: With Customer.Tables(CustomerData.CUSTOMERS_TABLE).Rows(0)

TxtEmail.Text = CStr(.Item(CustomerData.EMAIL_FIELD))

End With

错误的:With Customer.Tables(0).Rows(0)

TxtEmail.Text = CStr(.Item(0))

TxtEmail.Text = CStr(.Item(“Email”))

End With

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

…………………….还有N条 都是自己在实际编程中的经验教训不在列举了,希望大家也能总结一下作为自己的规范

时间: 2024-11-01 02:08:25

引言:Kent Beck 曾经说过“我只是个更注重的程序规范的程序员而已”的相关文章

vb.net 程序设计规范(1)

程序|规范|设计 引言:Kent Beck 曾经说过"我只是个更注重的程序规范的程序员而已" 目录: 前言 说明性文件规范 过程注释的规范 函数的注释规范 命名规范 设计规范: 前言: 1.设计规范的重要性:理由N多, 不在多述 2. 本文适用性 :vb.net 开发 asp.net 开发 注释代码的目标: 1. 叙述清除]代码的作用(是做什么,而不是怎么做) 2. 清楚说明代码所要表达的思想和逻辑 3. 表明代码中的重要转折点 4. 减少代码阅读者在他们大脑中模拟代码的运行 注意:注

Java开源软件测试工具大汇总

一.JUnit JUnit是由Erich Gamma 和Kent Beck 编写的一个回归测试框架(regression testing framework).Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能.Junit是一套框架,继承TestCase类,就可以用Junit进行自动测试了. http://www.junit.org/ 二.Cactus Cactus是一个基于JUnit框架的简单测试框架,用来单元测试服务端J

《重构:改善既有代码的设计》—第2章2.2节为何重构

2.2 为何重构我不想把重构说成是包治百病的万灵丹,它绝对不是所谓的"银弹".不过它的确很有价值,虽不是一颗银子弹却是一把"银钳子",可以帮助你始终良好地控制自己的代码.重构是个工具,它可以(并且应该)用于以下几个目的. 重构改进软件设计如果没有重构,程序的设计会逐渐腐败变质.当人们只为短期目的,或是在完全理解整体设计之前,就贸然修改代码,程序将逐渐失去自己的结构,程序员越来越难通过阅读源码而理解原来的设计.重构很像是在整理代码,你所做的就是让所有东西回到应处的位置

并发集合(一)引言

声明:本文是< Java 7 Concurrency Cookbook >的第六章,作者: Javier Fernández González     译者:许巧辉 校对:方腾飞 在本章中,我们将包含: 使用非阻塞线程安全的列表 使用阻塞线程安全的列表 用优先级对使用阻塞线程安全的列表排序 使用线程安全的.带有延迟元素的列表 使用线程安全的NavigableMap 创建并发随机数 使用原子变量 使用原子数组 引言 在编程中,数据结构是一种基本的元素.几乎每个程序都使用一个或多个数据结构类型来存

第四章 线程执行者(一)引言

在这个章节中,我们将覆盖: 创建一个线程执行者 创建一个大小固定的线程执行者 执行者运行带有返回结果的任务 运行多个任务并处理第一个结果 运行多个任务并处理所有结果 执行者延迟运行一个任务 执行者周期性地运行一个任务 执行者取消一个任务 执行者控制一个任务完成 执行者分离任务的启动和结果的处理 执行者控制被拒绝的任务 引言 通常,当你在Java中开发一个简单的并发编程应用程序,你会创建一些Runnable对象并创建相应的Thread对象来运行它们.如果你开发一个运行多个并发任务的程序,这种途径的

《C语言接口与实现:创建可重用软件的技术》一第1章 引言1.1 文学程序

第1章 引言 C语言接口与实现:创建可重用软件的技术 一个大程序由许多小的模块组成.这些模块提供了程序中使用的函数.过程和数据结构.理想情况下,这些模块中大部分都是现成的并且来自于库,只有那些特定于现有应用程序的模块需要从头开始编写.假定库代码已经全面测试过,而只有应用程序相关的代码会包含bug,那么调试就可以仅限于这部分代码. 遗憾的是,这种理论上的理想情况实际上很少出现.大多数程序都是从头开始编写,它们只对最低层次的功能使用库,如I/O和内存管理.即使对于此类底层组件,程序员也经常编写特定于

《数据科学:R语言实现》——第3章 数据预处理和准备 3.1 引言

第3章 数据预处理和准备 3.1 引言 在之前的章节中,我们介绍了如何把各种来源的数据整合在一起.然而,只是采集数据并不够,还需要确保所采集数据的质量.如果数据的质量不高,分析的结果可能会由于有偏采样或缺失数据而误导大家.而且,如果采集的数据没有良好的结构化和形态,你会很难进行数据关联和分析.因此数据预处理和准备是数据分析前的基础性工作. 熟悉SQL操作的读者可能已经理解如何使用数据库来处理数据.例如,SQL允许用户使用插入操作添加新的记录,使用更新操作修改数据,使用删除操作移除记录.但是,我们

《数据科学:R语言实现》——3.1 引言

3.1 引言 在之前的章节中,我们介绍了如何把各种来源的数据整合在一起.然而,只是采集数据并不够,还需要确保所采集数据的质量.如果数据的质量不高,分析的结果可能会由于有偏采样或缺失数据而误导大家.而且,如果采集的数据没有良好的结构化和形态,你会很难进行数据关联和分析.因此数据预处理和准备是数据分析前的基础性工作.熟悉SQL操作的读者可能已经理解如何使用数据库来处理数据.例如,SQL允许用户使用插入操作添加新的记录,使用更新操作修改数据,使用删除操作移除记录.但是,我们并不需要把采集的数据放到数据

《应用时间序列分析:R软件陪同》——第1章 引言 1.1 时间序列的特点

第1章 引言 1.1 时间序列的特点 本书研究的时间序列主要是根据时间先后对同样的对象按等间隔时间收集的数据,比如每日的平均气温.每天的销售额.每月的降水量.每秒钟容器的压力等等.虽然这些序列所描述的对象本身(比如容器压力)可能是连续的,但由于观测值并不连续,这种时间序列数据称为离散(discrete)时间序列.当然也有连续(continuous)时间序列,它是不间断地取值得到的时间序列,比如地震波和一些状态控制(比如月球车是否苏醒的用1-0表示的状态)的连续观测值,但对象不一定是连续的(比如0