腾讯编码规范_第1页
腾讯编码规范_第2页
腾讯编码规范_第3页
腾讯编码规范_第4页
腾讯编码规范_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

1、Tencent腾讯集团管理标准GL/YF 013-2007V1.0-L1Java编码规范2007-09-11 发布2007-09-11 实施腾讯集团发布TencentMGL/YF 013-2007V1 0-L1前言本标准系公司首次发布实施,主要针对公司所有软件产品源代码范围的Java编码风 格,对Java文件的文件组织、代码风格、注释、命名、声明、异常、习惯等方面均作出 规范,以保障公司项目代码的易维护性和编码安全性。本标准由研发管理部、3G产品中心共同制定。本标准主要起草人:Junjun(张莉于君)、lion (邱会发)本标准主要审核人:anwenfeng(冯文信)、Paulinesong(

2、宋虹漫)、Ericlin(林松)、 Stevezheng (郑全战)、Junehuang (黄俊)、Kevinxu (许冠严)、 polo(陈广域)、leon (郭凯天)本标准批准人:jeffxiong(熊明华)、charles (陈一丹)、tony (张志东)、ponyma (马化腾)本标准首次发布日期:2007年9月11 EI本标准发送部门:公司各部门Tencent/SmGL/YF 013-2007V1 0-UJAVA编码规范1目的为形成公司统一的Java编码风格,以保障公司项目代码的易维护性和编码安全性,特 制定本规范。2适用范围本标准适用于腾讯集团(含分公司等各级分支机构)所有使用Ja

3、va作为开发语言的软 件产品。本标准中“腾讯集团”是指腾讯控股有限公司、其附属公司、及为会计而综合入账的 公司,包括但不限于腾讯控股有限公司、深圳市腾讯计算机系统有限公司、腾讯科技(深 圳)有限公司、腾讯科技(北京)有限公司、深圳市世纪凯旋科技有限公司、时代朝阳 科技(深圳)有限公司、腾讯数码(深圳)有限公司、深圳市财付通科技有限公司。3总体原则所有使用Java作为开发语言的软件产品都须遵照本规范的内容进行编码。4文件组织4.1规则4.1.1由于超过2000行的程序难以阅读,应该尽量避免出现超过2000行的程序;4.1.2 一个Java源文件都包含一个单一的公共类或接口。若私有类和接口与一个公

4、共类 相关联,可以将它们和公共类放入同一个源文件。公共类必须是这个文件中的第一个类 或接口。4. 2组织顺序4.2.1文件注释(参见”6.1文件注释“);422包和引入语句:在多数Java源文件中,第一个非注释行是包语句。在它之后可以跟引入语句;423类或接口注释(参见”6.2类或接口注释”);4.2.4类或接口的声明;4.2.5类或接口的实现注释:如果有关类或接口的信息不适合作为“类或接口文档注释”,可以在类或接口的实现注释中给出;426类的(静态)变量:首先是类的公共变量,随后是保护变量,再后是包一级别的变量(没有访问修饰符),最后是私有变量;427实例变量:首先是公共级别的,随后是保护级

5、别的,再后是包一级别的(没有访问修饰符),最后是私有级别的;4.2.8构造方法;429方法:方法应该按功能分组,而不应该按作用域或访问权限进行分组。4.3范例直接查看以下文件可以找到编码套用的规则:Blah, java (注:可以通过复制粘贴保存到硬盘)5代码风格5.1缩进5.1.1程序块要采用缩进风格编写,缩进只使用TAB键,不能使用空格键(编辑器中请将TAB设置为4格);5.1.2方法体的开始、类的定义、以及if、foi do、while、switch case语句中的代码都 要釆用缩进方式;5.2对齐5.2.1程序块的分界符左大括号”和右大括号号”都另起一行,应各独占一行并且位于同一列,

6、同时与引用它们的语句左对齐;4TencentfiKGL/YF 013-2007V1 0-L15.2.2对齐只使用TAB键,不使用空格键;5.2.3不允许把多个短语句写在一行中,即一行只写一条语句;5.2.4 if、fbi 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关键字之后要留空格,

7、象if、foi、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采用大小写混合,提高名字的可读性

8、;7.1.3采用该领域的术语;尽量少用缩写,但如果一定要使用,当使用公共缩写和习惯缩 写等;7.1.4避免使用相似或者仅在大小写上有区别的名字。7. 2包命名721包名一律小写,少用缩写和长名;7.2.2采用以下规则:基本包.项目名.模块名.子模块名.7.2.3 基本包:com.tencent 或 com.qq: 724不得将类直接定义在基本包下,所有项目中的类、接口等都应当定义在各自的项目 和模块包中;例如:package com.tencent.kqq; package com.tencent.kqq.util;7.3类或接口命名类或接口名是个一名词,釆用大小写混合的方式,每个单词的首字母

9、大写。尽量使 你的类劣简洁而富于描述。使用完整单词,避免用缩写词(除非该缩写词被更广泛使用, 像 URL, HTML)o例如:class Raster;class ImageSprite;interface RasterDelegate;interface Storing;7.4变命名7.4.1采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写;7.4.2变量需不应以下划线或美元符号开头;7.4.3尽量避免单个字符的变量劣,除非是一次性的临时变量。临时变量通常被取需为1, j, k, m和m它们一般用于整型;c, d, e,它们一般用于字符型;7.4.4不采用匈牙利命名法则,对

10、不易清楚识别出该变量类型的变量应使用类型需或类型 名缩写作其后缀,例如:Thread animationThread;String responseStr;745组件或部件变量使用其类型名或类型名缩写作其后缀,例如:Command backCommand; Image barimage; TextField passwordField; Player dogSoundPlaver;9TencentMGL/YF 013-2007V1 O-L17.4.6集合类型变量,例如数组和矢量,应采用复数命名或使用表示该集合的名词做后缀:Image images; Vector requestQueue;7.

11、5常命名全部釆用大写,单词间用下划线隔开:static Anal int MIN_WIDTH = 4; static Anal int MAX_WIDTH = 999; static Anal int GET_THE_CPU = 1;7. 6方法命名方法名是一个动词,釆用大小写混合的方式,第一个单词的首字母小写,其后单词 的首字母大写;取值类可使用get前缀,设值类可使用set前缀,判断类可使用is(has) 前缀。getName(); setSarryO; isLogon();8声明&1类或接口声明类、接口定义语法规范:可见性(abstract*pfinal) Class|Iiiterfac

12、e class_name(extends11 implements*)父类或接口 名例如:10TencentMGL/YF 013-2007V1 0-L1public class GameScreenextends Canvas implements CommandListener; Runnable, HttpPosterListener & 2方法声明&2.1良好的程序设计应该尽可能减小类与类之间耦合,所遵循的经验法则是:尽量限制 成员函数的可见性。如果成员函数没必要公有(public),就定义为保护(protected);没 必要保护(protected),就定义为私有(private);

13、822方法定义语法规范:可见性abstract ,static final synchronized返回值类型 method_name (参数列表)(throws)异常列表例如:private void sendLoginRequest(String username, String password) throws IOException&2.3声明顺序:构造方法静态公共方法静态私有方法公共方法友元方法受保护方法私有方法main方法 824方法参数建议顺序:(被操作者,操作内容,操作标志,其他):TencentSSmGL/YF 013-2007V1 0-L1public void repla

14、ce(String sourceStr, 源字串String oldStr,被替换字串String newStr)替换为字串(建议性)8. 3变声明8.3.1 一行一个声明;8.3.2声明局部变量的同时初始化(在变量的初始值依赖于某些先前发生的计算的特殊情况下可以不用同时初始化);8.3.3只在代码块的开始处声明变量,(一个块是指任何被包含在大括号”秋V中间的代码)不要在首次用到该变量时才声明;8.3.4避免声明的局部变量覆盖上一级声明的变量,即不要在内部代码块中声明相同的变量名;8.3.5公共和保护的可见性应当尽量避免,所有的字段都建议置为私有,由获取和设置成员函数(Getter Sette

15、r)访问;&3.6定义一个变量或者常量的时候,不要包含包名(类似java.secunty.MessageDigest digest = null),而要定义成下面的格式,除非是两个包有相同的类夕】:import java.secunty.MessageDigest;MessageDigest digest = MessageDigest.getInstance(1MD5 * *);&3.7字段定义语法规范:(public,|,private,|,protected,)static,finardata_type field_name =, expression例如:private static

16、Hnal int TILE_WIDTH = 16;&3.8数组声明时应当将”跟在类型后,而不是字段名后:private Image images;private int sloverTicks;不要用这种数组声明方式 &3.9声明顺序:常量类变量实例变量:公有字段受保护字段友元字段私有字段/常量public Hnal 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;12Tencent/SmGL/YF 013-2007V1 O-L19异常9.1捕捉异常的目的是为了处理它。9.2多个异常应分别捕捉并处理,避免使用一个单一的catch來处理。10习惯10.1 if、for. d。、while等语句的执行语句部分无论多少都要加括号”;10.2每当一个case顺着往下执行时(因为没有br

温馨提示

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

评论

0/150

提交评论