Java命名规范

时间:2019-05-13 01:14:12下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《Java命名规范》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《Java命名规范》。

第一篇:Java命名规范

Java包的名字都是由小写单词组成。但是由于Java面向对象编程的特性,每一名Java程序员都可以编写属于自己的Java包,为了保障每个Java包命名的唯一性,在最新的Java编程规范中,要求程序员在自己定义的包的名称之前加上唯一的前缀。由于互联网上的域名称是不会重复的,所以程序员一般采用自己在互联网上的域名称作为自己程序包的唯一前缀。例如: net.frontfree.javagroup

类的名字必须由大写字母开头而单词中的其他字母均为小写;如果类名称由多个单词组成,则每个单词的首字母均应为大写例如TestPage;如果类名称中包含单词缩写,则这个所写词的每个字母均应大写,如:XMLExample,还有一点命名技巧就是由于类是设计用来代表对象的,所以在命名类时应尽量选择名词。

例如: Circle

interface RasterDelegate;

interface Storing;

方法的名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头。例如: sendMessge

变量(Variables)除了变量名外,所有实例,包括类,类常量,均采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写。变量名不应以下划线或美元符号开头,尽管这在语法上是允许的。

变量名应简短且富于描述。变量名的选用应该易于记忆,即,能够指出其用途。尽量避免单个字符的变量名,除非是一次性的临时变量。临时变量通常被取名为i,j,k,m和n,它们一般用于整型;c,d,e,它们一般用于字符型。char c;

int i;

float myWidth;

实例变量(Instance Variables)大小写规则和变量名相似,除了前面需要一个下划线 int _employeeId;

String _name;

Customer _customer;

常量的名字应该都使用大写字母,并且指出该常量完整含义。如果一个常量名称由多个单词组成,则应该用下划线来分割这些单词。

例如: MAX_VALUE

第二篇:Java命名规范

Java是一种区分字母的大小写(case-sensitive)的语言,下面谈谈Java语言中包、类、变量等的命名规范。

(一)Package(包)的命名:

Package的名字应该都是由一个小写单词组成,例如net.ebseries.modules。

(二)Class(类)的命名:

Class的名字首字母大写,通常由多个单词合成一个类名,要求每个单词的首字母也要大写,例如:DataFile或InfoParser。

(三)变量的命名:

变量的名字可大小写混用,但首字符应小写。词由大写字母分隔,限制用下划线,限制使用美元符($),因为这个字符对内部类有特殊的含义。如:inputFileSize。

(四)Interface(接口)的命名:与Class的命名类似。

(五)Static Final 变量(相当于常量)的命名

Static Final 变量的名字应该都大写,并且指出完整含义,例如:final MAXUPLOADFILESIZE=1024。

(六)方法的命名

方法名的第一个单词应该是动词,大小写可混用,但首字母应小写。在每个方法名内,大写字母将词分隔并限制使用下划线。参数的名字必须和变量的命名规范一致。使用有意义的参数命名,如果可能的话,使用和要赋值的字段一样的名字:

setCounter(int size){this.size = size;}

数组的命名

数组应该总是用下面的方式来命名:byte[] buffer;而不是:byte buffer[](习惯性问题而已)。

值得注意的是,命名时应尽量采用完整的英文描述符(也有特例)。此外,一般应采用小写字母,但类名、接口名以及任何非初始单词的第一个字母要大写。

归纳成以下几点,就是:尽量使用完整的英文描述符、采用适用于相关领域的术语、采用大小写混合使名字可读、尽量少用缩写,但如果用了,要明智地使用,且在整个工程中统一、避免使用长的名字(小于 15 个字母是个好主意)、避免使用类似的名字,或者仅仅是大小写不同的名字、避免使用下划线(除静态常量等)。

第三篇:资源上传命名规范

资源上传命名规范

【导语】

为了提高资源可读性,让您更加方便查阅资料,网站制定了《第二教育网资源命名规范》文档,所有上传的资料必须符合文档中要求。具体如下:

【高中上传资源命名规范】

一.标题命名规则:

1、备课资源命名规则:(教案,学案,课件,单元测试)

年级+科目+空格(半角)+资源标题+类别+空格+版本+必选修

例:

高中语文 第六单元《短歌行》教案 新人教版必修2 高中英语 Unit4 Warming Up and Reading课件 新人教版必修1

2、对于试题命名规则:省份+市+学校+年份+年级+科目+类别+版本

例:

江苏省淮州中学09-10学年高二地理下学期期末考试新人教版

无答案(缺答案改成无答案),扫描版,PDF版,图片版 例:

江苏省淮州中学09-10学年高二地理下学期期末考试(扫描版)新人教版

江苏省淮州中学09-10学年高二地理下学期期末考试(图片版)新人教版

江苏省淮州中学09-10学年高二地理下学期期末考试(PDF版)新人教版

江苏省淮州中学09-10学年高二地理下学期期末考试(无答案)新人教版

3、对于套题命名规则:必须格式相同(包括符号和空格)

例:

2011年高考语文系统集成一轮复习方案 第一编语言知识及运用 新人教版 2011年高考语文系统集成一轮复习方案 第二编文言文阅读 新人教版

2011年高考语文系统集成一轮复习方案 第三编文学常识、名著阅读和名句名篇 新人教版 2011年高考语文系统集成一轮复习方案 第四编古代诗歌鉴赏 新人教版 2011年高考语文系统集成一轮复习方案 第五编现代文阅读 新人教版

二.特殊命名规则:

注意:标题里除书名号和特别标题符号需要除外,其它符号(如:冒号,中间横线,间隔号,一律用空格代替。对于特殊格式文件名命名规则:

年级+科目+空格(半角)+资源标题+类别+空格+(特殊文件格式)+空格+版本+必选修

例:

高中英语 unit 4 Listening素材(mp3)新人教版必修4 高中英语 unit 4 Listening视频课件(avi)新人教版必修4 注:凡是swf 格式的文件,统一用命名:(flash)

对于网站上的视频素材,统一命名年级+科目+标题+视频+ 类别+视频格式+版本+必选修 例:高中政治 经济全球化视频素材(avi)新人教版必修1 三.命名专业性

1,高一,高二,高三和必选修,不能并形存在

例:该试题原文件名是:高一语文 第六单元《短歌行》教案 新人教版必修2 则命名规则:高中语文

第六单元《短歌行》教案 新人教版必修2 实现:文件名为高中,上传后台传到相对应所属的,高一年级里

2,综合网站各科分类,正确判断资源版本和必选修的准确性

3,根据资源标题及内容,正确判断资源所属科目的准确性 4, 根据原件名称去修改文件名,不能随意改动文件名的标题

【初中、小学上传资源命名规范】

一.标题命名规则:

初中:所有“新版”资源需要再标题上标注为(新版)+版本

小学:所有“新版”资源需要再标题上标注为(新版)+版本

1、备课资源的命名规则如下(注:备课包括课件 教案 学案 素材)

1)年级+科目+上下册+空格(半角)+资源标题+类别+空格+版本

例:三年级语文上册 第10课《写给云》课件 西师大版

二年级数学上册 课间活动教案 北师大版 七年级数学上册 1.4绝对值教案 浙教版

七年级语文下册 第一单元导学案 人教新课标版

八年级物理上册 4.4 光的折射教学课件(新版)新人教版

2)省份+年份+年级+科目+上下册+资源标题+类别+版本

例:江苏省灌南县2012年秋七年级语文上册《伟人细胞》教案 苏教版

3)省份+年份+年级+科目+上下册+资源标题+主题+类别+版本

例:湖北省钟祥市石牌镇七年级数学上册《整式的加减》复习课件 新人教版

安徽省亳州市风华中学七年级语文上册《第4课 金色花》课件3(新版)新人教版

2、试题资源的命名规则如下(注:试题包括期中 期末 月考 练习单元测试 复习等)

1)省份+年份+年级+科目+上下学期(第一学期)+类别+版本

例:浙江省湖州市吴兴区2013年一年级语文上学期期末考试试卷

江苏省太仓市2012-2013学年七年级英语第一学期期末考试试题 人教新目标版 吉林省镇赉县镇2013届九年级语文第四次月考试题(扫描版)新人教版 山东省青州市2013年三年级语文下学期期末质量检测试题(无答案)

吉林省镇赉县镇2013-2014九年级语文第四次月考试题(新版)新人教版 注:年份之间的横线一定要是这个状态的“-”

上学期(下学期)与第一学期(第二学期)不可以并存。

“期中考试试题”不可以并存,应该为“期中试题”

“缺答案”要改为“无答案”

扫描版的试题标题要为“扫描版,无答案” 而不应该是“无答案,扫描版”。

2)初中例如有单元、章节、知识点的要改为上册而不是上学期。下册与下学期同理。

例:广东省江门市七年级生物上学期第三单元综合检测题(无答案)正确应为:广东省江门市七年级生物上册 第三单元综合检测题(无答案)

3、中考套题的命名规则如下(注:必须格式相同 包括符号和空格 中考与九年级不可以并存)

1)年份+年级+科目(+复习或总复习)+资源标题+类别+版本

例:

【南方新中考】2013年中考生物复习人的生活需要空气课件 新人教版

【南方新中考】2013年中考生物复习生物的生殖和发育课件 新人教版

【南方新中考】2013年中考生物复习被子植物的一生课件 新人教版

【南方新中考】2013年中考生物复习专题四 突破中考社会热点题型课件 新人教版

【备考2014 志鸿优化设计】2013版中考化学总复习基础讲练 第五单元 化学方程式 新人教版(中学教材全解)2013-2014学年九年级化学全册 第8章 食品中的有机化合物综合检测题 沪教版

注:“【】”此符号的使用规则为,必须是参考用书或者是教材类的资源,其余的比较突出的重点需使用“()”

来显示。

2)省份+年份+年级+科目(+复习或总复习)+主题+资源标题+版本

例:

广东省2013年中考政治复习专题检测试题 过富有情趣的生活

广东省2013年中考政治复习专题检测试题 交往艺术新思维

广东省2013年中考政治复习专题检测试题 满怀希望迎接明天

广东省2013年中考政治复习专题检测试题 我们的文化

特例:

2012年中考政治一轮复习八上 7.1礼貌待人精品课件 新人教版

2012年中考政治一轮复习七上 1笑迎生活认识自我精品课件 新人教版

2012年中考政治一轮复习九年级 16关注经济发展精品课件 新人教版 3)小升初的命名规则

例:2014小升初语文知识点专项复习专题一 基础知识 a o e 教案

湖北省小升初英语 阅读理解基础训练10 北京市小升初语文模拟测试题

(四)4、特殊格式文件名命名规则如下

1)年级+科目+上下册+空格(半角)+资源标题+类别+(特殊文件格式)+空格+版本

例:五年级英语上册 lesson1课文朗读素材(MP3)新路径(一起)

九年级化学上册 co2制作及性质素材(flash)新人教版

七年级语文上册《15 钱塘湖春行》视频素材(f4v)(新版)新人教版

2)省份+年级+科目+上下册+空格(半角)+资源标题+类别+(特殊文件格式)+空格+版本

例:重庆市綦江区三江中学八年级语文上册 了解莲视频素材(mpg)

注:

1、凡是swf 格式的文件,统一用命名(flash)其它类型可以根据其文件的属性来定。

2、标题里除书名号和特别标题符号需要除外,其它符号(如:冒号,中间横线,间隔号,用空格代替,也有特例,需要自己判断,下面是例子。

特例:

3、标题里外不符,要以里面的为准进行命题,同时如果标题上没有知识点而里面有知识点的,要将其复制到标题上。

5、打包文件名命名规则如下

1)省份+年份+年级+科目+上下册+资源标题+类别+(打包套)+版本

例:湖南省岳阳市七年级英语上册 Unit 6 Do you like bananas教案(打包5套)人教新目标版

宁夏外国语学校小升初英语专项训练 完形填空(打包50套)

2)省份+年份+年级+科目+上下册+资源标题+类别(注:多种)+(打包套)+版本

例:八年级地理上册 《第一章 第四节 中国的民族》课件+学案+同步练习(打包3套)湘教版

注:多种类别的打包要将知识点加上书名号

二.命名专业性

1、综合网站各科分类,正确判断资源版本和上下册的准确性

2、根据资源标题及内容,正确判断资源所属科目的准确性

3、根据原件名称去修改文件名,不能随意改动文件名的标题

4、以上文件根据实际情况进行随时添加修改。

第四篇:oracle命名规范

1、编写目的

使用统一的命名和编码规范,使数据库命名及编码风格标准化,以便于阅读、理解和继承。

2、适用范围

本规范适用于公司范围内所有以ORACLE作为后台数据库的应用系统和项目开发工作。

3、对象命名规范 3.1 数据库和SID 数据库名定义为系统名+模块名

Ø

全局数据库名和例程SID名要求一致

Ø

因SID名只能包含字符和数字,所以全局数据库名和SID名中不能含有“_”等字符

3.2 表相关 3.2.1 表空间

Ø

面向用户的专用数据表空间以用户名+_+data命名,如Aud用户专用数据表空间可命名为Aud_data Ø

面向用户的专用索引表空间以用户名+_+idx命名 Ø

面向用户的专用临时表空间以用户名+_+tmp命名 Ø

面向用户的专用回滚段表空间以用户名+_+rbs命名

Ø

面向应用的表空间以应用名+_data/应用名+_idx/应用名+_tmp/应用名+_rbs命名 Ø

LOB段数据专用表空间以其数据表空间+_+lobs命名,如上例中数据表空间为Aud_data,则LOB段表空间可命名为Aud_data_lobs 3.2.2 表空间文件

表空间文件命名以表空间名+两位数序号(序号从01开始)组成,如Aud_data01等 3.2.3 表

表命名要遵循以下原则:

Ø

一般表采用“系统名+t_+模块名+_+表义名” 格式构成

Ø

若数据库中只含有单个模块,命名可采用“系统名+t_+表义名”格式构成

Ø

模块名或表义名均以其汉语拼音的首字符命名,表义名中汉语拼音均采用小写,且字符间不加分割符;

Ø

表别名命名规则:取表义名的前3个字符加最后一个字符。如果存在冲突,适当增加字符(如取表义名的前4个字符加最后一个字符等)Ø

临时表采用“系统名+t_tmp_+表义名” 格式构成 Ø

表的命名如

dft_gy_cbap:系统名(电费 df)+t_+模块名(高压 gy)+_+表义名(抄表安排 cbap)dft_cbbj: 系统名(电费 df)+t_+表义名(抄表标记 cbbj)

dft_tmp_hj: 系统名(电费 df)+tmp+表义名(合计hj)(此处为临时表)Ø

关联表命名为Re_表A_表B,Re是Relative的缩写,表A和表B均采用其表义名或缩写形式。

3.2.4 属性(列或字段)属性命名遵循以下原则:

Ø

采用有意义的列名,为实际含义的汉语拼音的首字符,且字符间不加任何分割符

Ø

属性名前不要加表名等作为前缀 Ø

属性后不加任何类型标识作为后缀 Ø

不要使用“ID”作为列名 Ø

关联字段命名以 “cd+_+关联表的表义名(或缩写)+_+字段名”进行 3.2.5 主键

Ø

任何表都必须定义主键 Ø

表主键命名为:“pk+_+表名(或缩写)+_+主键标识” 如“pk_YHXX_IDKH”等 3.2.6 外键

表外键命名为: “fk+_+表名(或缩写)+_主表名(或缩写)+_+主键标识” 如“fk_YHLX_YHXX_SFZH”等 3.2.7 CHECK约束

CHECK约束命名为: “chk+_+CHECK约束的列名(或缩写)” 3.2.8 UNIQUE约束

UNIQUE约束命名为: “unq+_+UNIQUE约束的列名(或缩写)” 3.2.9 索引

索引的命名为:“表名(或缩写)+_+列名+_idx”。

其中多单词组成的属性列列名取前几个单词首字符再加末单词首字符组成 如yd_kh表khid上的index: yd_kh_khid_idx 3.2.10 触发器

Ø

AFTER型触发器

系统名+tr_+<表名>_+ +[_row] Ø

BEFORE型触发器

系统名+tr_+<表名>_+bef_+[_row] Ø

INSTEAD OF型触发器

系统名+ti_+<表名>+_++[_row] Ø

各种类型的触发器中 i,u,d分别表示insert、update和delete 行级触发器,后加_row标识,语句级触发器不加,如 yddftr_CSH_i_row 3.2.11 簇

簇以簇中要存储的各个表(或表别名)及表间加and的组成命名,即表“A+And+表B„”,如存储GR(工人)和GRJN(工人技能)表的簇命名为GRAndGRJN 3.3 视图

视图命名以系统名v_+模块名作为前缀,其他命名规则和表的命名类似 3.4 序列

序列命名以seq_+含义名组成 3.5 同义词

同义词命名与其基础对象的名称一致,但要去除其用户前缀或含有远程数据库链接的后缀 3.6 存储对象相关 3.6.1 存储过程

存储过程命名由“系统名+sp+_+存储过程标识(缩写)”组成

存储过程标识要以实际含义的汉语拼音的首字符构成,并用下划线分割各个组成部分。如增加代理商的帐户的存储过程为“sfsp_ZJDLSZH”。3.6.2 函数

函数命名由“系统名+f+_+函数标识”组成 3.6.3 包

包命名由“系统名+pkg+_+包标识”组成 3.6.4 函数文本中的变量采用下列格式命名:

Ø

参数变量命名采用“i(o或io)+_+名称”形式,前缀i或o表输入还是输出参数 Ø

过程变量命名采用“l+_+名称”形式 Ø

全局包变量命名采用“g+_+名称”形式 Ø

游标变量命名采用“名称+_+cur”形式 Ø

常量型变量命名采用“c+_+名称”形式

Ø

变量名采用小写,若属于词组形式,用下划线分隔每个单词

Ø

变量用来存放表中的列或行数据值时,使用%TYPE、%ROWTYPE方式声明变量,使变量声明的类型与表中的保持同步,随表的变化而变化 3.7 用户及角色

Ø

用户命名由“系统名称+_+user+_+名词(或缩写)或名词短语(或缩写)”组成 Ø

角色命名由“系统名称+_+role+_+名词(或缩写)或名词短语(或缩写)”组成 3.8 数据库链接

Ø

数据库链接命名由“远程服务器名+_+数据库名+_+link”组成 Ø

若远程服务器名和数据库名一致,上式“_+数据库名”部分省去 3.9 命名中的其它注意事项

Ø

命名都不得超过30个字符。Ø

不要在对象名的字符之间留空格

Ø

小心保留词,要保证你的命名没有和保留词、数据库系统或者常用访问方法冲突

4、编码规范 4.1 一般性注释

4.1.1 注释尽可能简洁、详细而全面

4.1.2 创建每一数据库对象时都要加上COMMENT ON注释,以说明该对象的功能和用途;建表时,对某些数据列也要加上COMMENT ON注释,以说明该列和/或列取值的含义。如:XX表中有CZZT列属性为NUMBER(10, 0)可加COMMENT ON注释如下

COMMENT ON COLUMN XX.CZZT IS '0 = 正常, 1 = 等待, 2 = 超时, 3 = 登出' 4.1.3 注释语法包含两种情况:单行注释、多行注释 单行注释:注释前有两个连字符(--),一般对变量、条件子句可以采用该类注释。多行注释:符号之间的内容为注释内容。对某项完整的操作建议使用该类注释。4.2 函数文本注释

4.2.1 在每一个块和过程(存储过程、函数、包、触发器、视图等)的开头放置注释 CREATE [OR REPLACE] PROCEDURE dfsp_xxx „

4.2.2 传入参数的含义应该有所说明。如果取值范围确定,也应该一并说明。取值有特定含义的变量(如boolean类型变量),应给出每个值的含义。

4.2.3 在每一个变量声明的旁边添加注释。说明该变量要用作什么 通常,简单使用单行注释就行了,例如

l_sfzh CHAR(11)

--身份证号码 4.2.4 在块的每个主要部分之前添加注释 在块的每个主要部分之前增加注释,解释下—组语句目的,最好是说明该段语句及算法的目的以及要得到的结果,但不要对其细节进行过多的描述

4.2.5 在块和过程的开头注释中还可以增加要访问的数据库等信息 4.3 常用SQL语句的编写规范 4.3.1 CREATE语句

CREATE TABLE dft_dksz(YHBS

VARCHAR2(20)

NOT NULL,ZHGX

DATE,DKKHD

VARCHAR2(24),CONSTRAINT pk_dksz_yhbs PRIMARY KEY(YHBS))

4.3.2 SELECT语句

查询语句采用以下原则编写(可最大化重用共享池中的SQL语句,提高应用程序性能): Ø

将SELECT语句分为5部分:(1)由SELECT开头,后跟一个显示查询结果的列表;

(2)由FROM开头,后跟一个或多个获取数据所涉及的表;(3)由WHERE开头,后跟一个或多个确定所需值的条件;

(4)由GROUP BY开头,后跟一个或多个表列名,通过这些列以对查询结果进行汇总;(5)由ORDER BY开头,后跟一个或多个表列名,通过这些列以对查询结果进行排序。Ø

每个部分分行编写,将每一行的第一个关键字与第一行的SELECT尾部对齐,如 SELECT col1, col2, col3

FROM table1 WHERE col1 > col2 GROUP BY col1, col2 ORDER BY col1;Ø

关键字用大写,列名和表名采用小写

Ø

语句中嵌入逗号时,在逗号后面加一空格,当逗号是最后一个字符时,把它放在本行

Ø

当语句的同一部分要延续到下一行时,按下列格式排列: SELECT col1, col2, col3, col4, col5, col6, col7, col8, col9, col10 Ø

将语句中WHERE和AND部分格式化,书写布局类似于 WHERE

AND

AND Ø

当语句中出现括号时,括号的两边不留空格

Ø

在SQL语句使用运算符时,操作两边应各留一个空格,如 WHERE X = Y

AND A = B

AND C = D 4.3.3 INSERT语句

INSERT INTO <要插入的表名>

(<列1>, <列2>,.., <列n-1>, <列n>)

VALUES

(<列1值>, <列2值>,.., <列n-1值>, <列n值>)4.3.4 UPDATE语句

UPDATE <要更新的表名>

SET <要更新的列> = <列值> 4.3.5 DELETE语句 DELETE FROM table1 WHERE col1 = '???' 4.4 条件执行语句(IF)编写规范

条件执行语句IF„ELSE按以下格式编写 IF <条件表达式> THEN

<一条或多条语句> [ELSE(或ELSIF<条件表达式>)THEN

<一条或多条语句> END IF;注:(1)

在IF„THEN和ELSE(或ELSIF)及ELSE„THEN和END IF间可包含一条或多条PL/SQL语句,而不需要加BEGIN和END(2)

IF„ELSE„ENDIF语句可以嵌套(3)

注意ELSIF的写法 4.5 循环语句编写规范 4.5.1 简单循环语句 LOOP

<零条或多条语句> EXIT WHEN <条件表达式>

<零条或多条语句> END LOOP;4.5.2 FOR循环语句

FOR 变量 IN [变量取值范围] LOOP

<一条或多条语句> END LOOP;4.5.3 WHILE循环语句 WHILE <条件表达式> LOOP

<一条或多条语句> END LOOP;4.6 函数文本(存储过程、函数和包等)

Ø

对于存储过程、函数等程序块都要有异常处理部分,在异常部分的最后都要设置OTHERS异常情态处理器,以提高程序的自检能力,格式如下: BEGIN

„ EXCEPTION WHEN excep—name1 THEN

WHEN excep—name2 THEN

„ WHEN OTHERS THEN

END;Ø

对于子程序、触发器、包等带名的程序块,要使用结束标识,如 CREATE OR REPLACE PROCEDURE XXXsp_XXX IS

„ BEGIN

END XXXsp_XXX;

第五篇:C#编码规范及命名规范

山东锋士自动化系统有限公司

C# 编码规范

指导规则和最佳实践 Version 1.0

董毅 2010/4/26

第一条 编码的风格和细节要求

编码风格

至少在单一文件中缩进和风格要保持一致,同一行中内容不要太长,最好不要大于10个单词。不要随意地或者以容易混淆作用域嵌套关系的方式放置括号,要尽量遵循每个文件中已经使用的体例。

命名约定和规范

1.不要使用晦涩的名称,起名要简单易懂

a.避免使用单字母做变量名,比如:i 或者 t。应使用index或者temp进行替代 b.不要缩写单词,比如用num代替number 2.使用全大写字母表示宏,常量,如:LIKE_THIS 3.类,函数和枚举的名称的单词首字母大写,如:LikeThis public class SomeClass {

const int DefaultSize = 100;public void SomeMethod(){ } } 4.变量的首字母小写,其他单词首字母大写,如:likeThis void MyMethod(int someNumber){ int number;} 5.接口的第一个字母用I开头

interface IMyInterface {...} 6.私有成员变量以m_开头,剩余内容遵从首字母大写的规范

public class SomeClass { private int m_Number;} 7.属性类以Attribute做后缀,异常类以Exception做后缀

8.命名方法以【动词】-【目标】组成,比如:ShowDialog()

9.拥有返回值的方法应该以返回值描述其方法名,比如:GetObjectState()10.总是使用C#的预定义类型,而不是System命名空间中的别名,比如:

object 而不是

Object string 而不是

String int

而不是

Int32 11.对于基类,类型描述采用大写字母。当处理.NET中的类型时才保留后缀Type //正确

public class LinkedList { } //避免

public class LikedList { }

12.使用有意义的名字空间,比如项目名称或者公司名称 13.避免使用类的全称,而是使用using语句进行引用 14.避免在命名空间内使用using语句

15.将所有framework命名空间吗放在一起,后面放自定义或第三方的命名空间名

using System;using System.Collections;using System.ComponentModel;using System.Data;using MyCompany;using MyControls;

16.采用委托推断,不要显式实例化委托

delegate void SomeDelegate();public void SomeMethod(){ } SomeDelegate someDelegate = SomeMethod;

17.缩进至少在同一文件中要保持统一风格,注释缩进和其注释的代码在同一层次 18.所有注释要经过认真检查,不要有不明语义或者错别字 19.所有成员变量应该定义在前面,和属性或方法间空开一行

public class MyClass { int m_Number;string m_Name;

public void SomeMethod1(){ } public void SomeMethod2(){ } }

20.局部变量的定义尽可能靠近它的初次使用 21.文件名应该体现其包含的类

22.当使用partial类型且每部分分配一个文件时,以类名+逻辑部分的方式来命名文件

//MyClass.cs public partial class MyClass { } //MyClass.Designer.cs public partial class MyClass { } 23.做大括号总是放在新行中

24.匿名方法模仿普通方法布局,但是大括号要和委托声明对其

delegate void SomeDelegate(string someString);//正确

void InvokeMethod(){ SomeDelegate someDelegate = delegate(string name){ MessageBox.Show(name);};someDelegate(“Juval”);} //错误

void InvokeMethod(){ SomeDelegate someDelegate = delegate(string name){ MessageBox.Show(name);};someDelegate(“Juval”);}

25.没有参数的匿名方法使用空括号,仅当匿名方法被用于任何委托时才可以省略括号

delegate void SomeDelegate();//正确

SomeDelegate someDelegate1 = delegate(){ MessageBox.Show(“Hello”);};//错误

SomeDelegate someDelegate1 = delegate { MessageBox.Show(“Hello”);};

26.在使用Lambda表达式时,模仿一般的方法规范。

delegate void SomeDelegate(string someString);

SomeDelegate someDelegate =(name)=> { Trace.WriteLine(name);MessageBox.Show(name);};

27.当内联Lambda表达式仅包含一个简单的语句时,应避免多语句或者返回语句出现在大括号中。可以简单使用小括号表达:

delegate void SomeDelegate(string someString);

void MyMethod(SomeDelegate someDelegate){ }

//正确

MyMethod(name=>MessageBox.Show(name));

//错误

MyMethod((name)=>{Trace.WriteLine(name);MessageBox.Show(name);});注释

编写有用的注释,不要在注释中重复写代码语义。应该编写的是解释方法和原理的说明性注释。

函数

不要在一个函数中包含太多内容,函数的功能要简单,短小,使人更容易理解,也有利于防错。

第二条 尽量在代码中不包含被警告的内容

高度重视警告:使用编译器的最高警告级别。构建尽量做到干净利落(没有警告)。理解所有的警告。通过修改代码而不是降低警告级别来排除警告。

即使程序一开始似乎能够正确运行,也还是要这样做。即使你能够肯定警告是良心的,仍然要这样做。因为良性警告的背后可能隐藏着未来指向真正危险的警告。

项目设置和项目结构

1. 总是以4级警告建立项目

2. 在发布版中将警告当作错误(注意这不是VS.NET的缺省设置)

3. 永远不要抑制特定的编译警告

4. 总是在应用程序的配置文件中显式地说明支持的运行时版本

5. 避免显式的自定义版本改向和绑定到CLR程序集

6. 不要在AssemblyInfo.cs中放任何逻辑。除了在AssemblyInfo.cs中,不要在任何文件中放程序集属性(应包括公司名称、描述、版权等)7. 所有程序集应该使用相对路径引用 8. 不允许在程序集中循环引用

9. 努力对同一逻辑应用程序中(通常是一个解决方案)的所有程序集和客户端使用统一的版本号

10.将Visual Studio.NET应用配置文件命名为App.config,并将其包括在项目中 11. 将Visual Studio.NET缺省的项目结构改为标准的布局,对项目文件夹和文件应用统一的结构 12. 一个发布版本应该包含Debug标记

第三方头文件

无法修改的库头文件可能包含引起警告的构造。如果这样,可以用自己的包含原头文件的版本将此文件包装起来,并有选择的为该作用域关闭警告,然后在整个项目的其他地方包含此包装文件。

代码中尽量不包含未使用的函数,变量

经确认确实不需要使用的函数,变量(不包括为未来使用而设的占位符),可以进行删除处理。

不要遗漏return语句

PS:例外情况

有时候编译器可能会发出一些确实无意义的警告。这些警告要经过团队确认后尽量在局部进行屏蔽,但要做出明确的注释,说明为什么必须禁用。

第三条 使用自动构建系统 第四条 使用版本控制系统

应确保每次提交的代码都可以构建成功。

第五条 定期进行代码审查

互相阅读彼此的代码不但可以尽快提高自己的编码水平,也可以相互借鉴更好的方法。

第六条 一个实体应该只有一个紧凑的职责

一次只解决一个问题:只给一个实体(变量、类、函数、名称空间、模块和库)赋予一个定义良好的职责。应该只选择目的单一的函数,小而且目的单一的类,和边界清晰的紧凑模块。

应该用较小的低层抽象构建更高层次的抽象,要避免将几个低层抽象集合成一个较大的低层次抽象聚合体。用几个简单的行为来实现一个复杂的行为,比反其道而行之更加容易。

第七条 正确,简单和清晰第一

软件简单为美:正确优于速度,简单优于复杂,清晰优于机巧,安全优于不安全。

要避免使用程序设计语言中的冷僻特性。应该使用最简单的有效技术。不要使用不必要的操作符重载

构造函数的参数,应该使用命名变量,而不要使用临时变量

这能够避免可能的声明二义性,还经常能使代码的意图更加清晰,从而更容易维护,而且也更安全。

第八条 编程中应该知道何时和如何考虑可伸缩性

当数据爆炸性增长时:不要进行不成熟的优化,如果能够证明优化必要而且非常重要,则应该集中精力改善算法的复杂性,而不是进行小型的优化,比如节省一个多余的加法运算。

为了避免未来可能遭遇到的数据处理容量上的瓶颈问题,应该预先做这些事情:

使用灵活的、动态分配的数据,不要使用固定大小的数组

那种“比现在所需要的最大数组还要大”的数组,在正确性和安全性方面都存在严重问题。只有在编译时大小固定不变的数组才是可接受的。

了解算法的实际复杂性

要留心那些不易发觉的陷阱,比如看似线性的算法实际上要调用其他线性操作,结果算法实际上是二次的。

优先使用线性算法或者尽可能快的算法 尽可能避免劣于线性复杂性的算法

如果面对的是一个O(NlogN)或者O(N²)算法,就必须花费精力寻找替代方案,只有代码才不至于在数据量显著增长的情况下陷入深度激增的性能深潭。例如:建议使用范围成员函数(通常是线性的)而不是反复调用单元素替代函数,后者会很容易在一个线性的操作要调用另一个线性操作时变成二次复杂性。永远不要使用指数复杂性的算法,除非真的别无选择

在决定接受指数算法之前,必须尽力寻找替代方案,因为对于指数算法来说,即使是数据量的有限增加,也会使算法的性能急剧下降。

总而言之,要尽可能优先使用线性(或者更好的)算法,尽可能合理的避免使用比线性算法差的多项式算法。竭尽全力避免使用指数算法。

第九条 不要进行不成熟的优化

我们将不成熟的优化定义为这样的行为:以性能为名,使设计或代码更加复杂,从而导致可读性更差,却没有经过验证的性能需求(比如实际的度量数据与目标的比较结果)作为正当理由,因此本质上对程序没有真正的好处。

因此,默认时,不要把注意力集中在如何使代码更快上;首先关注的应该是使代码尽可能的清晰和易读。

第十条 不要进行不必要的劣化

所谓不成熟的劣化一词,指的就是编写如下这些没有必要的、可能比较低效的程序:

在可以用通过引用传递的时候,却定义了通过值传递的参数 在使用前缀++操作符很合适的场合,却使用后缀版本 在构造函数中使用赋值操作而不是初始化列表

第十一条 尽量减少全局和共享数据

共享会导致冲突:避免共享数据,尤其是全局数据。共享数据会增加耦合度,从而降低可维护性,通常还会降低性能。

名字空间作用域中的对象、静态成员对象或者跨线程或跨进程共享的对象会减少多线程和多处理器环境中的并行性,往往是产生性能和可伸缩性瓶颈的源头。建议用通信方式(比如消息队列)代替数据共享。尽量降低类之间的耦合,尽量减少交互

第十二条 隐藏信息

不要泄密:不要公开提供抽象的实体的内部信息。而应该公开抽象(至少是get/set抽象),而不是数据。

数据只是抽象、概念性状态的一种可能的具体化而已。如果将注意力集中在概念而不是其表示形式上,就能够提供富于提示性的接口,并按需要对实现进行调整。比如缓存还是实时地计算,又比如使用不同的表示方式,针对某种使用模式进行优化。

绝对不要将类的数据成员设为public,仅对最需要的类型标记为public,其他的标记为internal。它同样适用于更大的实体比如程序库。模块和程序库同样应该提供定义抽象和其中信息流的接口,从而使与调用代码的通信比采用数据共享方式更安全,耦合度更低。

第十三条 尽量在编译和连接时检查错误,而不要等到运行时

运行时检查取决于控制流和数据的具体情况,这意味着很难知道检查是否彻底。相比而言,编译时检查与控制流和数据无关,一般情况下能够获得更高的可信度。

第十四条 尽量合理的使用const常量

不变的值更易于理解、跟踪和分析,所以应该尽可能地使用常量代替变量,定义值的时候,应该把常量作为默认的选项:常量很安全,在编译时会对其进行检查。尽量不要强制转换常量的类型。

例如:

const int x = 0;public const double productWeight = 11.7;private const string productName = “Visual C#”;

第十五条 避免使用语义不清的参数

要避免在代码中使用诸如42和3.14159这样的文字常量。它们本身没有提供任何说明,并且因为增加了检测的重复而使维护更加复杂。可以用符号名称和表达式替换它们,比如width*aspectRatio

名称能够增加信息,并提供单一的维护点,而程序中到处重复的原始数据是无名的,维护起来很麻烦。常量应该是枚举或者const值,有合适的作用域和名称。

重要的特定于领域的常量应该放在名字空间一级

第十六条 尽可能局部的使用变量 第十七条 避免函数过长,避免嵌套过深

过长的函数和嵌套过深的代码块的出现,经常是因为没能赋予一个函数以一个紧凑的职责所致,这两种情况通常都能够通过更好的重构予以解决。每个函数都应该是顾其名而能思其义,易于理解的工作单元,要避免将多个小概念单元合并到一个长的函数体中的做法。

一些建议:

尽量紧凑:对一个函数只赋予一种职责

不要自我重复:优先使用命名函数,而不要让相似的代码片断反复出现 优先使用&&:在可以使用&&条件判断的地方要避免使用连续嵌套的if 不要过分使用try 优先使用标准算法

不要根据类型标签(type tag)进行分支(switch)第十八条 尽量减少定义性依赖,避免循环依赖

循环依赖是指两个模块直接或者间接地相互依赖。所谓模块就是一个紧凑的发布单元,而互相依赖的多个模块并不是真正的独立模块,而是紧紧胶着在一起的一个更大的模块,因此,循环依赖有碍于模块性,是大型项目的祸根。请避免循环依赖。

第十九条 不要引用多余的资源文件 第二十条 尽量不要重载默认的操作符,至少应保证操作符的自然语义不被破坏 第二十一条 优先使用++和—的标准形式。优先调用前缀形式。第二十二条 用小类代替巨类

小类更易于编写,更易于保证正确、测试和使用。小类更有可能适用于各种不同情况。应该用这种小类体现简单概念,不要用大杂烩式的类。

第二十三条 要避免使用隐式转换

在做类型提供隐式转换之前,请三思而行,应该依赖的是显式转换。

隐式转换有两个主要的问题:

1.它们会在最意料不到的地方抛出异常

2.它们并不总是能与语言的其他元素有效地配合 第二十四条 将数据成员设为私有的,无行为的聚集

要避免将公用数据和非公用数据混合在一起,因为这几乎总是设计混乱的标志。信息隐藏是优秀软件工程的关键,应该将所有数据成员都设为私有的,这是类用来保持其不变式的最佳方式。

第二十五条 不要允许异常跨越模块边界传播

最低限度,应用程序必须在以下位置有捕获所有异常的catch(…)兜底语句,其中大多数都直接适用于模块:

1.在main函数的附近:捕获并用日志记录任何将使程序不正常终止而其他地方又没有捕获的异常。

2.在从无法控制的代码中执行回调附近3.在现场边界的附近4.在模块接口边界的附近

5.在IO,数据库连接等高危操作附近

第二十六条 如有可能,尽量用算法调用代替手工编写的循环

对非常简单的循环而言,手工编写的循环有可能是最简单也是最有效的解决方案。但是编写算法调用代替手工编写的循环,可以使表达力更强、维护性更好、更不易出错,而且同样高效。

第二十七条 编码惯例

1. 避免在一个文件中放多个类

2. 一个文件应该只对一个命名空间提供类型,避免在同一文件中有多个命名空间 3. 避免一个文件的长度超过500行(除了机器生成的代码)4. 避免方法定义超过25行

5. 避免超过5个参数的方法,使用结构传递多个参数 6. 每行应该不超过80个字符,或者10个单词 7. 不要手工编辑任何机器生成的代码

A.如果修改机器生成的代码,修改代码格式和风格以符合本编码标准 B.尽可能使用partial类以分解出需要维护的部分 8. 避免对显而易见的内容作注释

A.代码应该是自解释的,由可读性强的变量和方法组成的好的代码应该不需要注释 B.参加第一条中的注释部分

9. 仅对操作的前提、内在的算法等写文档 10. 避免方法级的文档

A.对API文档采用大量的外部文档

B.方法级注释仅作为对其他开发人员的提示 11. 决不要硬编码数值,声明一个常量是最好的选择 12. 仅对本轮就是常量的值使用const修饰符,例如一周的天数 13. 避免对只读变量使用const修饰符。在此情况下,采用readonly修饰符

public class MyClass { public const int DaysInWeek = 7;public readonly int Number;public MyClass(int someValue){ Number = someValue;} }

14.对任何假设采用assert。平均来讲,每五行代码中就有一行是断言

using System.Diagnostics;object GetObject(){} object someObject = GetObject();Debug.Assert(someObject!= null);

15. 16. 17. 每行代码都应该经过白盒测试 仅捕获已经显式处理了的异常

在抛出异常的catch语句中,总是抛出最初异常以保持最初错误的堆栈位置

catch(Exception exception){ MessageBox.Show(exception.Message);throw;}

18. 定义自定义的异常时

A.从ApplicationException继承 B.提供自定义的序列化 19. 避免采用friend程序集,因为这样增加了程序集间的耦合度 20. 避免使用依赖于从特定位置运行的程序集的代码。21. 尽量减少应用程序集(客户端EXE程序集)的代码,采用类库而不要包含业务逻辑层代码。22. 避免对枚举提供明确的值

//正确

public enum Color { Red,Green,Blue } //错误

public enum Color { Red=1,Green=2,Blue=3 }

23. 避免对枚举指定类型

//错误

public enum Color : long { Red, Green, Blue }

24. 25. 26. If语句总是使用括号,即使它只包含一句语句 避免使用?:条件运算符 避免使用(#if…#endif),应使用conditional方法代替

[Conditianal(“MySpecialCondition”] public void MyMethod(){}

27. 避免在布尔条件语句中调用函数,赋值到局部变量并检查它们的值。

bool IsEverythingOK(){} //错误

if(IsEverythingOK()){} //正确

bool ok=IsEverythingOK();if(ok){}

28.29. 总是使用从0开始的数组

总是使用一个for循环显式地初始化一个引用类型数组

public class MyClass {} const int ArraySize=100;MyClass[] array=new MyClass{ArraySize];for(int index=0;index

30. 31. 不用提供public或protected成员变量,而是使用属性 应尽量使用get/set的自动返回属性

//错误

class MyClass { int m_Number;

public int Number { get { return m_Number;} set { m_Number=value;} } } //正确

class MyClass { public int Number { get;set;} }

32. 33. 34. 35. 避免使用new,应使用override替代

在一个密封的类里总是把public和protected方法标记为virtual 永远不要使用不安全的代码 合理使用as操作符进行映射

Dog dog = new GermanShepherd();GermanSheperd shepherd = dog as GermanShepherd;if(shepherd!= null){} 36. 37.

{ 在使用一个委托前总是要先检查它是否为空(null)

不要提供公有成员变量,使用存取器(accessors)进行替代

public class MyPublisher MyDelegate m_SomeEvent;public event MyDelegate SomeEvent { add { m_SomeEvent += value;} remove { m_SomeEvent-= value;} } }

38. 避免定义事件处理委托,使用EventHandler或者GenericEventHandler进行替代 39. 使用EventsHelper安全的发布事件 40. 总是优先使用接口,但要避免一个接口只包含一个成员,包含3-5个成员较为合适。上限为12。41. 避免事件成为接口成员 42. 提供明确定义的接口描述 43. 不要假设一个接口是可以安全运作的,永远都要做好处理意外的准备

SomeType obj1;IMyInterface obj2;

obj2=obj1 as IMyInterface;if(obj2!= null){ obj2.Method1();} else { //处理可能出现的错误

}

44. 不要将可能改变的,或用于数据库连接的,或者交付给最终客户使用的任何字符串进行硬编码,要使用资源文件定义他们 45. 使用String.Empty代替””

//错误

string name = “";//正确

string name = String.Empty;

46. 47. 48.

定义长字符串的时候,应该使用StringBuilder,而不是string 永远不要使用goto语句,除非迫不得已

在switch代码块中总要包含一个default项,并且为其设置断言

int number = SomeMethod();switch(number){ case 1: Trace.WriteLine(”Case 1:“);break;case 2: Trace.WriteLine(”Case 2:“);break;default: Debug.Assert(false);break;}

49.不要使用this引用,除非某些特殊情况,比如从一个构造器中运行另外一个

//一个正确使用this的例子

public class MyClass { public MyClass(string message){} public MyClass():this(”Hello"){} }

50. 不要使用base关键词。除非你想要解决一个子类成员和基类间的名称冲突,或者运行一个基类构造器

//一个正确使用base的例子

public class Dog { public Dog(string name){} virtual public void Bark(int howLong){} } public class GermanShepherd:Dog { public GermanShepherd(string name):base(name){} public override void Bark(int howLong){ base.Bark(howLong);} }

51. 不要使用GC.AddMemortyPressure(),不要依赖HandleCollector。合理的使用Dispose()和Finalize()方法 52. 一般情况下不要使用check来检查代码(防止性能损失),但是在可能的溢出区则使用check来保持代码的安全性。安全性的优先级永远高于性能。

int CalcPower(int number,int power){ int result=1;for(int count=1;count<=power;count++){ checked { result*=number;} } return result;}

53. 在代码中要避免直接使用object数据类型(System.Object),可以使用约束或者as进行替代。

class SomeClass {} //错误

class MyClass { void SomeMethod(T t){ object temp=t;SomeClass obj=(SomeClass)temp;} } //正确

class MyClass where T: SomeClass { void SomeMethod(T t){ SomeClass obj =t;} }

54.{} 一般而言,不要在通用接口中定义约束。接口级别的约束经常会被强类型所覆盖

public class Customer //错误

public interface IList where T: Customer {} //正确

public interface ICustomerList:IList {} 第二十八条 安全

1. 总是对应用程序私有的组件,集合等使用强名,这样可以保证安全性

2. 在应用程序配置文件中使用加密算法,进行安全保护

3. 对不受控制的引用方法,要做适当的安全处理,如加入断言控制

4. 不要使用SuppressUnmanagedCodeSecurity属性 5. 不要使用/unsafe来切换TlbImp.exe的默认行为。

6. 在服务器端要使用自定义的安全规则来扩展Microsoft的默认配置,以保证更高级别的安全性

7. 为防止引诱性攻击,应修改组件级别的运行权限,限制其可能的不安全行为

8. 在编写Windows程序时,在每个Main()中都要使用相应的安全规则

下载Java命名规范word格式文档
下载Java命名规范.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    前端开发命名规范范文

    前端开发工作规范 为提高团队协作效率,便于后台人员添加功能及前端后期优化维护,输出高质量的文档,特制订此文档。本规范文档一经确认,前端开发人员必须按本文档规范进行前台页......

    POP店铺命名规范

    POP店铺命名规范 一、POP店铺命名总则: 1.1店铺名不得超过30个字符; 1.2店铺名不得与已经开通的店铺名称重复,如两个店铺同时申请同一店铺名的,则依照申请在先原则审批开通店铺,......

    css命名规范(英文命名)[合集5篇]

    一.文件命名规范 [b]样式文件命名[/b] [quote]主要的 master.css 布局,版面 layout.css 专栏 columns.css 文字 font.css 打印样式 print.css 主题 themes.css [/quote] [b]C......

    css命名规范(英文命名)5篇

    一.文件命名规范 [b]样式文件命名[/b] [quote]主要的 master.css 布局,版面 layout.css 专栏 columns.css 文字 font.css 打印样式 print.css 主题 themes.css [/quote] [b]C......

    C语言命名规范10条

    C语言命名规范10条从事C语言的教学也有两年了,在教学中发现学生们在编程方面有一个极不好的习惯,就是随意命名,这不仅给自己日后阅读自己程序时带来不便,也给其他的程序阅读者带......

    Java安全开发规范

    Java安全开发规范 第1章前言 为提高应用安全水平,特制定本规范对代码编制进行规范。 规范中的安全要求按照严格程度分为三级: > Policy 必须遵循的策略,实现方法可以自定义,但不......

    JAVA代码注释规范

    JAVA代码注释规范 一、 规范存在的意义 1. 好的注释规范可以让人一眼看明白这是干什么的,特别是对于我们这种行业;共同合作完成一个项目需要分工明确,所以也需要有明了的注释规......

    java注释规范总结大全

    在软件开发的过程中总是强调注释的规范,但是没有一个具体的标准进行说明,通常都是在代码编写规范中简单的描述几句,不能作为一个代码注释检查的标准和依据,做什么都要有一个依据......