tencentjava编码规范.doc_第1页
tencentjava编码规范.doc_第2页
tencentjava编码规范.doc_第3页
tencentjava编码规范.doc_第4页
tencentjava编码规范.doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

GL/YF 013-2007V1.0-L1腾讯集团管理标准 GL/YF 013-2007V1.0-L1Java编码规范2007-09-11发布 2007-09-11实施腾讯集团 发布14前 言本标准系公司首次发布实施,主要针对公司所有软件产品源代码范围的Java编码风格,对Java文件的文件组织、代码风格、注释、命名、声明、异常、习惯等方面均作出规范,以保障公司项目代码的易维护性和编码安全性。本标准由研发管理部、3G产品中心共同制定。本标准主要起草人:Junjun(张莉珺)、Iron(邱会发) 本标准主要审核人:anwenfeng(冯文信)、 Paulinesong(宋虹漫)、Ericlin(林松)、Stevezheng(郑全战) 、Junehuang(黄俊)、Kevinxu(许冠严)、polo(陈广域)、leon(郭凯天)本标准批准人:jeffxiong(熊明华) 、charles(陈一丹)、tony(张志东)、ponyma(马化腾)本标准首次发布日期:2007年9月11日本标准发送部门:公司各部门JAVA编码规范1 目的为形成公司统一的Java编码风格,以保障公司项目代码的易维护性和编码安全性,特制定本规范。2 适用范围本标准适用于腾讯集团(含分公司等各级分支机构)所有使用Java作为开发语言的软件产品。本标准中“腾讯集团”是指腾讯控股有限公司、其附属公司、及为会计而综合入账的公司,包括但不限于腾讯控股有限公司、深圳市腾讯计算机系统有限公司、腾讯科技(深圳)有限公司、腾讯科技(北京)有限公司、深圳市世纪凯旋科技有限公司、时代朝阳科技(深圳)有限公司、腾讯数码(深圳)有限公司、深圳市财付通科技有限公司。3 总体原则所有使用Java作为开发语言的软件产品都须遵照本规范的内容进行编码。4 文件组织4.1 规则4.1.1由于超过2000行的程序难以阅读,应该尽量避免出现超过2000行的程序;4.1.2一个Java源文件都包含一个单一的公共类或接口。若私有类和接口与一个公共类相关联,可以将它们和公共类放入同一个源文件。公共类必须是这个文件中的第一个类或接口。4.2 组织顺序4.2.1文件注释(参见6.1文件注释);4.2.2包和引入语句:在多数Java源文件中,第一个非注释行是包语句。在它之后可以跟引入语句;4.2.3类或接口注释(参见6.2类或接口注释);4.2.4类或接口的声明;4.2.5类或接口的实现注释:如果有关类或接口的信息不适合作为“类或接口文档注释”,可以在类或接口的实现注释中给出;4.2.6类的(静态)变量:首先是类的公共变量,随后是保护变量,再后是包一级别的变量(没有访问修饰符),最后是私有变量;4.2.7实例变量:首先是公共级别的,随后是保护级别的,再后是包一级别的(没有访问修饰符),最后是私有级别的;4.2.8构造方法;4.2.9方法:方法应该按功能分组,而不应该按作用域或访问权限进行分组。4.3 范例直接查看以下文件可以找到编码套用的规则:(注:可以通过复制粘贴保存到硬盘)5 代码风格5.1 缩进5.1.1程序块要采用缩进风格编写,缩进只使用TAB键,不能使用空格键(编辑器中请将TAB设置为4格);5.1.2方法体的开始、类的定义、以及if、for、do、while、switch、case语句中的代码都要采用缩进方式;5.2 对齐5.2.1程序块的分界符左大括号 和右大括号都另起一行,应各独占一行并且位于同一列,同时与引用它们的语句左对齐;5.2.2对齐只使用TAB键,不使用空格键;5.2.3不允许把多个短语句写在一行中,即一行只写一条语句;5.2.4 if、for、do、while、case、switch、default等语句自占一行。5.3 换行一行的长度超过80个字符需要换行,换行规则如下:5.3.1在一个逗号后面断开;5.3.2在一个操作符前面断开;5.3.3长表达式要在低优先级操作符处划分新行;5.3.4新行缩进2个TAB。5.4 间隔5.4.1类、方法及相对独立的程序块之间、变量说明之后必须加空行;5.4.2关键字之后要留空格, 象if、for、while 等关键字之后应留一个空格再跟左括号(, 以突出关键字;5.4.3方法名与其左括号(之间不要留空格, 以与关键字区别;5.4.4二元操作符如 =、 += =、 =、 +、 *、 %、 &、 |、 1)int isShow = 0;/ 是否显示6.5.2多行注释使用注释界定符/*.*/,例如: /* * Here is a block comment with * multiple lines for text comments. */7 命名7.1 基本规则7.1.1使用可以准确说明变量、字段、类、接口、包等完整的英文描述符;7.1.2采用大小写混合,提高名字的可读性;7.1.3采用该领域的术语;尽量少用缩写,但如果一定要使用,当使用公共缩写和习惯缩写等;7.1.4避免使用相似或者仅在大小写上有区别的名字。7.2 包命名7.2.1包名一律小写, 少用缩写和长名;7.2.2采用以下规则:基本包.项目名.模块名.子模块名.7.2.3基本包:com.tencent 或 com.qq;7.2.4不得将类直接定义在基本包下,所有项目中的类、接口等都应当定义在各自的项目和模块包中;例如:package com.tencent.kqq;package com.tencent.kqq.util;7.3 类或接口命名类或接口名是个一名词,采用大小写混合的方式,每个单词的首字母大写。尽量使你的类名简洁而富于描述。使用完整单词,避免用缩写词(除非该缩写词被更广泛使用,像URL,HTML)。例如:class Raster;class ImageSprite;interface RasterDelegate;interface Storing;7.4 变量命名7.4.1采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写;7.4.2变量名不应以下划线或美元符号开头;7.4.3尽量避免单个字符的变量名,除非是一次性的临时变量。临时变量通常被取名为i,j,k,m和n,它们一般用于整型;c,d,e,它们一般用于字符型;7.4.4不采用匈牙利命名法则,对不易清楚识别出该变量类型的变量应使用类型名或类型名缩写作其后缀,例如:Thread animationThread;String responseStr;7.4.5组件或部件变量使用其类型名或类型名缩写作其后缀,例如:Command backCommand;Image barImage;TextField passwordField;Player dogSoundPlayer;7.4.6集合类型变量,例如数组和矢量,应采用复数命名或使用表示该集合的名词做后缀:Image images;Vector requestQueue;7.5 常量命名全部采用大写,单词间用下划线隔开:static final int MIN_WIDTH = 4; static final int MAX_WIDTH = 999; static final int GET_THE_CPU = 1;7.6 方法命名方法名是一个动词,采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写;取值类可使用get前缀,设值类可使用set前缀,判断类可使用is(has)前缀。getName();setSarry();isLogon();8 声明8.1类或接口声明类、接口定义语法规范:可见性(abstract|final) Class|Interface class_name(extends|implements)父类或接口名例如:public class GameScreen extends Canvas implements CommandListener, Runnable, HttpPosterListener8.2方法声明8.2.1良好的程序设计应该尽可能减小类与类之间耦合,所遵循的经验法则是:尽量限制成员函数的可见性。如果成员函数没必要公有 (public),就定义为保护 (protected);没必要保护 (protected),就定义为私有 (private);8.2.2方法定义语法规范: 可见性abstract static final synchronized返回值类型 method_name(参数列表)(throws)异常列表 例如:private void sendLoginRequest(String username, String password) throws IOException 8.2.3声明顺序:构造方法静态公共方法静态私有方法公共方法友元方法受保护方法私有方法main方法8.2.4方法参数建议顺序:(被操作者,操作内容,操作标志,其他):public void replace(String sourceStr, /源字串String oldStr, /被替换字串 String newStr) /替换为字串 (建议性)8.3变量声明8.3.1一行一个声明;8.3.2声明局部变量的同时初始化(在变量的初始值依赖于某些先前发生的计算的特殊情况下可以不用同时初始化); 8.3.3只在代码块的开始处声明变量,(一个块是指任何被包含在大括号和中间的代码)不要在首次用到该变量时才声明;8.3.4避免声明的局部变量覆盖上一级声明的变量,即不要在内部代码块中声明相同的变量名;8.3.5公共和保护的可见性应当尽量避免,所有的字段都建议置为私有,由获取和设置成员函数(Getter、Setter)访问;8.3.6定义一个变量或者常量的时候,不要包含包名(类似java.security.MessageDigest digest = null),而要定义成下面的格式,除非是两个包有相同的类名:import java.security.MessageDigest;MessageDigest digest = MessageDigest.getInstance(MD5);8.3.7字段定义语法规范:(public|private|protected) static final data_type field_name = expression ;例如:private static final int TILE_WIDTH = 16;8.3.8数组声明时应当将跟在类型后,而不是字段名后:private Image images;private int slowerTicks;/不要用这种数组声明方式8.3.9声明顺序:常量类变量实例变量:公有字段受保护字段友元字段私有字段/ 常量public final static double PI = 3.141592653589793;/ 类变量protected static String key = “Love”;/ 实例变量/* * 共有字段 */public String userName = “Tom”;/* * 受保护字段 */protected float price = 0.0;/* * 友元字段 */Vector vPorducts = null;/* * 私有字段 */private int count;9 异常9.1捕捉异常的目的是为了处理它。9.2多个异常应分别捕捉并处理,避免使用一个单一的catch来处理。10 习惯10.1 if、for、do、while等语句的执行语句部分无论多少都要加

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论