程序员编码规范.docx
- 文档编号:12593040
- 上传时间:2023-06-06
- 格式:DOCX
- 页数:35
- 大小:52.41KB
程序员编码规范.docx
《程序员编码规范.docx》由会员分享,可在线阅读,更多相关《程序员编码规范.docx(35页珍藏版)》请在冰点文库上搜索。
程序员编码规范
文档编号
版本号
密级
程序员编码规范
编写
校对
审核
批准
目 录
一.概述1
二.界面设计及控制1
2.1易用性1
2.2规范性2
2.3帮助设施3
2.4合理性3
2.5美观与协调性5
2.6菜单位置6
2.7独特性6
2.8快捷方式的组合7
三.通用编码规范8
3.1基本要求8
3.2可读性要求8
3.3结构化要求8
3.4正确性与容错性要求8
3.5可重用性要求9
3.6变量命名9
3.7函数命名9
3.8控件的命名:
9
3.9注释10
3.10程序11
3.11性能11
四.C++编码规范12
4.1常量命名和宏定义12
4.2其他命名规范12
4.3C++Builder编程规范13
五.Java编码规范17
5.1命名规范17
5.2Java文件样式18
5.3注意事项21
六.Web应用程序编码规范21
6.1网页设计21
6.2JSP编码规范22
一.概述
本标准的制订主要是为了规范程序员的编码,提高程序员的编码质量,从而从根本上提高应用系统的质量和性能。
本标准分别从应用程序的界面设计及控制、代码编制规范(通用编码规范、C++编码规范、Java编码规范)、Web应用程序编码规范三大方面阐述了程序员在程序编制过程中应该注意的问题。
从而使程序员养成良好的编程习惯,编制出逻辑实现正确、处理流程清晰、可读性强、性能优良的优秀代码。
二.界面设计及控制
界面是软件与用户交互的最直接的层,界面的好坏决定用户对软件的第一印象。
而且设计良好的界面能够引导用户自己完成相应的操作,起到向导的作用。
同时界面如同人的面孔,具有吸引用户的直接优势。
设计合理的界面能给用户带来轻松愉悦的感受和成功的感觉,相反由于界面设计的失败,让用户有挫败感,再强大的功能都可能在用户的畏惧与放弃中付诸东流。
因此程序员应该提高对界面的重视程度,设计出简洁、统一、实用、方便、美观的用户界面。
以下所有规则都是界面设计过程中应该注意的:
2.1易用性
按钮名称应该易懂,用词准确,摒弃模棱两可的字眼,要与同一界面上的其他按钮易于区分,能望文知意最好。
理想的情况是用户不用查阅帮助就能知道该界面的功能并进行相关的正确操作。
易用性细则:
1)完成相同或相近功能的按钮用Frame框起来,常用按钮要支持快捷方式。
2)完成同一功能或任务的元素放在集中位置,减少鼠标移动的距离。
3)按功能将界面划分成局域块,用Frame框括起来,并要有功能说明或标题。
4)界面要支持键盘自动浏览功能,即按Tab键的自动切换功能。
5)界面上首先应输入的、重要信息的控件在Tab顺序中应当靠前,位置也应放在窗口上较醒目的位置。
6)同一界面上的控件数最好不要超过10个,多于10个时可以考虑使用分页界面显示。
7)同一界面上的功能数量也最好不要多于10个,过多导致使用不便。
8)分页界面要支持在页面间的快捷切换,常用组合快捷键Ctrl+Tab
9)默认按钮要支持Enter及选操作,即按Enter后自动执行默认按钮对应操作。
10)可写控件检测到非法输入后应给出说明并能自动获得焦点。
11)Tab键的顺序与控件排列顺序要一致,目前流行:
总体从上到下,同时行间从左到右的方式。
12)复选框(CheckBox)和选项框(RadioButton)中的内容尽量按选择几率的高低而先后排列。
13)复选框(CheckBox)和选项框(RadioButton)通常要有默认选项。
14)界面空间较小时使用下拉框(ComboBox)而不用选项框。
15)选项数较少时使用选项框,相反使用下拉列表框。
16)专业性强的软件要使用相关的专业术语,通用性界面则提倡使用通用性词眼。
2.2规范性
通常界面设计都按Windows界面的规范来设计,即包含“菜单条、工具栏、工具箱、状态栏、滚动条、右键快捷菜单”的标准格式,可以说:
界面遵循规范化的程度越高,则易用性相应的就越好。
小型软件一般不提供工具箱。
规范性细则:
1)常用菜单要有命令快捷方式。
2)完成相同或相近功能的菜单用横线隔开放在同一位置。
3)菜单前的图标能直观的代表要完成的操作。
4)菜单深度一般要求最多控制在三层以内。
5)大型软件一般工具栏要求可以根据用户的要求自己选择定制。
6)相同或相近功能的工具按钮放在一起。
7)工具栏中的每一个按钮要有及时提示信息。
8)一条工具栏的长度最长不能超出屏幕宽度。
9)工具栏太多时可以考虑使用工具箱。
10)工具箱要具有可增减性,由用户自己根据需求定制。
11)工具箱的默认总宽度不要超过屏幕宽度的1/5。
12)状态条要能显示用户切实需要的信息,常用的有:
目前的操作、系统状态、用户位置、用户信息、提示信息、错误信息等,如果某一操作需要的时间较长,还应该显示进度条和进程提示。
13)状态条的高度以放置五号字为宜,滚动条的宽度比状态条的略窄。
14)右键快捷菜单采用与菜单相同的准则,且右键快捷菜单在对话框中不应出现。
2.3帮助设施
系统应该提供详尽而可靠的帮助文档,在用户使用产生迷惑时可以自己寻求解决方法。
帮助设施细则:
1)操作时要提供及时调用系统帮助的功能。
常用F1。
2)在界面上调用帮助时应该能够及时定位到与该操作相对应的帮助位置。
也就是说帮助要有即时针对性。
3)最好提供目前流行的联机帮助格式或HTML帮助格式。
4)用户可以用关键词在帮助索引中搜索所要的帮助,当然也应该提供帮助主题词。
5)打包新系统时,对作了修改的地方在帮助文档中要做相应的修改。
6)在帮助中应该提供我们的技术支持方式,一旦用户难以自己解决可以方便的寻求专业系统维护人员的帮助。
2.4合理性
屏幕对角线相交的位置是用户直视的地方,正上方四分之一处为易吸引用户注意力的位置,在放置窗体时要注意利用这两个位置。
合理性细则:
1)父窗体或主窗体的中心位置应该在对角线焦点附近。
即采取屏幕居中。
2)子窗体位置应该在主窗体的左上角或正中。
3)多个子窗体弹出时应该依次向右下方偏移,以显示出窗体标题为宜。
4)重要的命令按钮与使用较频繁的按钮要放在界面上较注目的位置。
5)与正在进行的操作无关的按钮应该加以屏蔽(Windows中用灰色显示,没法使用该按钮)。
6)对可能造成数据无法恢复的操作必须提供确认信息,给用户放弃选择的机会。
并且将按钮的缺省焦点置在“取消”按钮上。
7)非法的输入或操作应有足够的提示说明。
8)对运行过程中出现问题而引起错误的地方要有提示,让用户明白错误出处,避免形成无限期的等待。
9)提示、警告、或错误说明应该清楚、明了、恰当。
10)对于需要执行长时间的操作,必须使用进度条,让用户了解进展情况,避免使用户误解为死机。
11)对于下拉框(ComboBox),如果不允许用户输入,则应将该控件的Style属性设为csDropDownList,使用户只能选择。
12)当下拉框(ComboBox)允许用户不选择任何选项时,不应显示一个空的选项,应使用文字描述,如“请选择…”等。
13)对于文本框(TextBox)一般需要根据其对应的数据库字段的类型以及长度来限制用户允许输入的字符和长度。
14)对于ListView以Report形式(ViewStyle属性=vsReport)显示数据,一般要求实现列排序,如果由于特殊原因不实现列排序,需要将ListView的ColumnClick属性设为false,屏蔽列点击的效果。
15)对于数据录入界面,重点考虑如何提高用户的录入速度。
例如界面中有“身份证号”和“出生日期”,当用户输入了一个合法的身份证号后,系统应该自动根据身份证号将出生日期提取出来并填入“出生日期”控件中。
16)系统的提示框样式应统一,即使用标准的Windows提示框,其中包括标题、图标、提示语和功能按钮。
图标使用要规范,要根据提示信息的性质选择不同的图标,而且除非严重的错误,一般不使用“X”图标,以免使用户产生畏惧心理。
17)如果系统中需要经常录入一些重复数据,应考虑将其提取出来,让用户进行一次配置,然后系统自动根据配置完成该信息的录入。
例如:
系统有登记企业信息的功能,其中企业信息包括该企业所在的省、市、区,由于该系统安装到某个市级单位后,所登记企业的所在省、市都是确定的,让用户每次登记时都重复选择省、市将给用户带来很大的不便。
应该由用户在系统初始化时设置好缺省的省、市,在企业登记时只要选择该企业所在的区即可,这样就提高了用户的登记效率。
18)对于输入型控件禁止为其指定输入法,因为用户机器很有可能没有安装指定的输入法。
由于安装OfficeXP等软件后,C++Builder会自动为输入型控件指定输入法,所以一定要注意并确定输入型控件没有指定输入法。
19)窗体显示后,缺省的焦点应该设在最合理的控件上,方便用户操作。
20)在判断输入框的值是否为空或存储输入值时,应利用Trim()方法去掉输入值两端的空格,然后再判断。
这样可以避免产生数据存储值(SQLServer会自动将结尾的空格删除)和用户输入值不相同的情况。
2.5美观与协调性
界面大小应该适合美学观点,感觉协调舒适,能在有效的范围内吸引用户的注意力。
美观与协调性细则:
1)长宽接近黄金点比例(宽高比为4:
3),切忌长宽比例失调。
2)布局要合理,不宜过于密集,也不能过于空旷,合理的利用空间。
3)按钮大小基本相近,忌用太长的名称,免得占用过多的界面位置,要与界面的大小和空间协调。
4)避免空旷的界面上放置很大的按钮。
5)放置完控件后界面不应有很大的空缺位置。
6)字体的大小要与界面的大小比例协调,通常使用的字体中,宋体9-12较为美观,很少使用超过12号的字体。
建议使用宋体9号字。
7)前景与背景色搭配合理协调,反差不宜太大,最好少用深色,如大红、大绿等。
常用色考虑使用Windows界面色调。
8)如果使用其他颜色,主色要柔和,具有亲和力与磁力,坚决杜绝刺目的颜色。
9)大型系统常用的主色有"#E1E1E1"、"#EFEFEF"、"#C0C0C0"等。
10)界面风格要保持一致,字的大小、颜色、字体要相同,除非是需要艺术处理或有特殊要求的地方。
11)如果窗体支持最小化和最大化或放大时,窗体上的控件也要随着窗体而缩放;切忌只放大窗体而忽略控件的缩放。
对于窗体中包含ListView、TreeView、DBGrid、StringGrid等控件,必须支持最大化,使用户能够尽量多的获得信息。
12)如果能给用户提供自定义界面风格则更好,由用户自己选择颜色、字体等。
2.6菜单位置
菜单是界面上最重要的元素,菜单位置按照按功能来组织。
菜单设测试细则:
1)菜单通常采用“常用--主要--次要--工具--帮助”的位置排列,符合流行的Windows风格。
2)常用的有“文件”、“编辑”,“查看”等,几乎每个系统都有这些选项,当然要根据不同的系统有所取舍。
3)下拉菜单要根据菜单选项的含义进行分组,并且按照一定的规则进行排列,用横线隔开。
4)一组菜单的使用有先后要求或有向导作用时,应该按先后次序排列。
5)没有顺序要求的菜单项按使用频率和重要性排列,常用的放在开头,不常用的靠后放置;重要的放在开头,次要的放在后边。
6)如果菜单选项较多,应该采用加长菜单的长度而减少深度的原则排列。
7)对常用的菜单要有快捷命令方式,组合原则见2.8。
8)对与进行的操作无关的菜单要用屏蔽的方式(Enabled=false)加以处理,如果采用动态加载方式(即只有需要的菜单才显示)最好。
9)菜单前的图标不宜太大,与字高保持一致最好。
10)主菜单的宽度要接近,字数不应多于四个,每个菜单的字数能相同最好。
11)主菜单数目不应太多,最好为单排布置。
2.7独特性
如果一味的遵循业界的界面标准,则会丧失自己的个性.在框架符合以上规范的情况下,设计具有自己独特风格的界面尤为重要。
尤其在商业软件流通中有着很好的潜移默化的广告效用。
1)安装界面上应有单位介绍或产品介绍,并有自己的图标。
2)主界面(最好是大多数界面)上要有公司图标,但要根据产品性质和要求而定。
3)登录界面(程序启动前的Logo)上要有本产品的标志,同时包含公司图标。
4)帮助菜单的“关于”中应有版权和产品信息。
5)公司的系列产品要保持一致的界面风格,如背景色、字体、菜单排列方式、图标、安装过程、按钮用语等应该大体一致。
2.8快捷方式的组合
在菜单及按钮中使用快捷键可以让喜欢使用键盘的用户操作得更快一些,在西文Windows及其应用软件中快捷键的使用大多是一致的。
菜单中:
1)面向事务的组合有:
组合键
Ctrl-D
Ctrl-F
Ctrl–H
Ctrl-I
Ctrl-N
Ctrl-S
Ctrl-O
功能
删除
寻找
替换
插入
新记录
保存
打开
2)编辑:
组合键
Ctrl-A
Ctrl-C
Ctrl-V
Ctrl-X
Ctrl-Z
Ctrl-Y
功能
全选
拷贝
粘贴
剪切
撤消操作
恢复操作
3)文件操作:
组合键
Ctrl-P
Ctrl-W
功能
打印
关闭
4)系统菜单
组合键
Alt-F
Alt-E
Alt-T
Alt-W
Alt-H
功能
文件
编辑
工具
窗口
帮助
5)MSWindows保留键:
组合键
Ctrl-Esc
Ctrl-F4
Alt-F4
Alt-Tab
Enter
Esc
Shift-F1
功能
任务列表
关闭窗口
结束应用
下一应用
缺省按钮/确认操作
取消按钮/取消操作
上下文相关帮助
6)按钮中:
(可以根据系统需要而调节,以下只是常用的组合。
)
组合键
Alt-Y
Alt-C
Alt-N
Alt-D
Alt-Q
Alt-A
Alt-E
Alt-B
Alt-R
Alt-W
功能
确定(是)
取消
否
删除
退出
添加
编辑
浏览
读
写
这些快捷键也可以作为开发中文应用软件的标准,但亦可使用汉语拼音的开头字母。
三.通用编码规范
无论用何种编程语言,都应该养成良好的编码习惯,好的编码习惯可以大大提高程序代码的可读性、帮助程序员理清编程思路、提高程序的执行效率。
从而从根本上提高系统质量。
3.1基本要求
●程序结构清晰,简单易懂,单个函数的行数尽量不超过100行。
●尽量使用标准库函数和公共函数,从而使代码精简,避免垃圾程序。
●禁止随意定义全局变量,尽量使用局部变量。
●使用括号以避免二义性。
3.2可读性要求
●尽量作到可读性第一,书写效率第二。
●代码要有整齐的缩进,可以用Tab或空格,一般为2个或4个空格。
●每个源程序文件及函数,都有相应的说明,说明规范见3.9中的说明。
●主要变量(结构、类或对象)定义应有注释说明,注释能反映其含义。
●常量定义(DEFINE)有相应说明。
●处理过程的每个阶段都有相关注释说明。
●在典型算法前都有注释。
●循环、分支层次不能超过五层。
3.3结构化要求
●禁止出现两条等价的支路。
●少用或不用GOTO语句。
●用CASE实现多路分支。
●避免不必要的分支。
3.4正确性与容错性要求
●所有变量在调用前必须被初始化。
●修改一个错误时可能产生新的错误,因此在修改前首先考虑对其它程序的影响。
●对所有的用户输入,必须进行合法性检查。
●为避免不可靠,不要比较浮点数的相等,如:
10.0*0.1==1.0
●程序与环境或硬件发生联系时,必须主动去处理发生的意外事件,如文件能否逻辑锁定、打印机是否联机等。
●用Insert语句向数据库中增加记录时,要遵循如下格式:
insertinto表名(字段名列表)values(字段对应值列表),不要省略“字段名列表”,这样如果日后该表增加了可以为空的字段,程序不用修改就可以适应该变化。
●单元测试也是编程的一部分,提交联调测试的程序必须首先通过单元测试。
3.5可重用性要求
●重复使用的完成相对独立功能的算法或代码应抽象为公共控件、函数或类。
●公共控件或类应考虑OO(面向对象)思想,减少外界联系,考虑独立性或封装性。
●公共控件或类应建立使用模板。
3.6变量命名
命名必须具有一定的实际意义,形式为xAbcFgh。
其中,x由变量类型确定(常用的x取值参见下表),Abc、Fgh表示连续意义字符串,如果连续意义字符串仅两个,可都大写,如OK。
变量类型
x值
byte
b
short
sh
word
w
int
I
long
l
float
f
double
d
string
s
char
c
bool
bl
指针
p
局部变量中可采用如下几个通用变量:
xTemp,xResult,i、j(一般用于循环变量),x、y(一般表示坐标)。
3.7函数命名
第一个字母必须使用大写字母,要求用大小写字母组合的方式来规范函数命名,必要时可用下划线间隔,示例如下:
void ImportantPoint(void); //Module Name:
r01/sdw.c
void ShowChar(int,int,chtype); //Local Module
void ScrollUp_V (int,int); //Local Module
3.8控件的命名:
可以用小写前缀表示类别,如下所示。
但由于有些开发工具提供的控件较多(如C++Builder、Delphi等),要定义和识别前缀比较困难,因此也可以使用其缺省的名称。
frm 窗口
cmd 按钮
cmb combo,下拉式列表框
txt 文本输入框
lab labal,标签
img image,图象
pic picture
grd Grid,网格
scr 滚动条
lst 列表框
3.9注释
●原则上注释要求使用中文;有困难时可以使用英文。
●文件开始的注释内容包括:
公司名称、版权、作者名称、时间、模块用途、背景介绍等,复杂的算法需要加上流程说明;
●函数注释包括:
输入、输出、函数描述、流程处理、全局变量、调用样例等,复杂的函数需要加上变量用途说明;
●程序中的注释包括:
修改时间和作者、方便理解的注释等;
引用一:
文件开头的注释模板
/******************************************************************
**文件名:
**Copyright(c)1998-1999*********公司技术开发部
**创建人:
**日 期:
**修改人:
**日 期:
**描 述:
**
**版 本:
**-------------------------------------------------------------------------------------------------
******************************************************************/
引用二:
函数开头的注释模板
/*****************************************************************
**函数名:
**输 入:
a,b,c
** a---
** b---
** c---
**输 出:
x---
** x为1,表示...
** x为0,表示...
**功能描述:
**全局变量:
**调用模块:
**作 者:
**日 期:
**修 改:
**日 期:
**版本
****************************************************************/
引用三:
程序中的注释模板
/*----------------------------------------------------------*/
/*注释内容 */
/*----------------------------------------------------------*/
3.10程序
●程序编码力求简洁,结构清晰,避免太多的分支结构及太过于技巧性的程序,尽量不采用递归模式。
●编写程序时,亦必须想好测试的方法,换句话说,”单元测试”的测试方案应在程序编写时一并拟好。
注释一定要与程序一致。
●版本封存以后的修改一定要将旧语句用/**/封闭,不允许自行删除或修改,并要在文件及函数的修改记录中加以记录。
●程序中每个block的”{}”必须对齐,嵌套的block每进一层,缩进一个TAB,TAB为2或4个空格, 对于比较大的函数,每个block和特殊的函数调用,都必须注明其功能。
3.11性能
在写代码的时候,从头至尾都应该考虑性能问题。
这不是说时间都应该浪费在优化代码上,而是我们时刻应该提醒自己要注意代码的效率。
如果没有时间来实现一个高效的算法,那么我们应该在文档中记录下来,以便在以后有空的时候再来实现她。
经常要考虑的性能问题包括:
●尽量减少数据库操作的次数。
●对从数据库查询并显示大量数据时,一定用分页的方式实现。
●查询数据时不要用“select*”,需要哪些字段就列出哪些字段。
●对于复杂的、在一个事务中进行多步数据库操作的,应该使用存储过程。
●对于要判断数据表中是否存在符合条件的数据时,不要用“select字段名from表名where条件”,而是要用“selecttop1字段名from表名where条件”。
●从数据库中查询数据时,SQL语句中尽量包含主键或索引字段,这样会提高查询速度。
●线程中一定要在每次循环结束后休眠一定的时间,避免CPU负荷过重。
●如果用C++Builder或Delphi编程,对于ComboBox、ListView、TreeView等控件,在填充数据时,如果在后面的程序中需要取出每个数据项对应的唯一标识(通常为数据表中的主键字段的值),则要用Add
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序员 编码 规范