Java&Android编码规范1/31Java&Android编码规范Java&Android编码规范2/31目录前言...................................................................................................................................................................................31代码布局................................................................................................................................................................41.1基本格式............................................................................................................................................................41.2对齐......................................................................................................................................................................51.3空行空格............................................................................................................................................................61.4断行......................................................................................................................................................................82注释.......................................................................................................................................................................112.1实现注释.........................................................................................................................................................112.2文档注释.........................................................................................................................................................153命名规则.............................................................................................................................................................184声明.......................................................................................................................................................................235表达式与语句...................................................................................................................................................246类和接口.............................................................................................................................................................277Android.................................................................................................................................................................29Java&Android编码规范3/31前言编写本规范的目的是为了进一步规范JAVA软件编程风格,提高软件源程序的可读性、可靠性和可重用性,确保在开发成员或开发团队之间的工作可以顺利交接,不必花很大的力气便能理解已编写的代码,以便继续维护和改进以前的工作,提高软件源程序的质量和可维护性,减少软件维护成本。本规范的内容包括:代码布局、注释、命名规则、声名、表达式与语句、类与接口等。本规范分成规则性和建议性两种:对于规则性规范,要求所有软件开发人员严格执行;对于建议性规范,开发人员可以根据实际情况选择执行。自本规范实施之日起,以后新编写的和修改的代码均应执行本规范。本规范用到的术语解释如下:规则:编程时必须遵守的规则。建议:编程时必须加以考虑的原则。说明:对相应规则的必要的解释。正例:对此规则或建议给出的修正后的例子。反例:对此规则或建议给出的反面的例子。Java&Android编码规范4/311代码布局代码布局的目的是显示出程序良好的逻辑结构,提高程序的准确性、连续性、可读性、可维护性。更重要的是,统一的代码布局和编程风格,有助于提高整个项目的开发质量,提高开发效率,降低开发成本。同时,对于普通程序员来说,养成良好的编程习惯有助于提高自己的编程水平,提高编程效率。因此,统一的、良好的程序布局和编程风格不仅仅是个人主观美学上的或是形式上的问题,而且涉及到产品质量,涉及到个人编程能力的提高,必须要引起重视。1.1基本格式正例:packagecom.sunsharp;importjava.awt.peer.CanvasPeer;importjava.io.*;publicclassClassName{}说明:package语句其后可跟import语句,而且与package间隔一个空行。import包的排列顺序为java开头的包在最前面,接下来是引自外部的包,再接下来是应用程序自身的包,即import中标准的包名要在本地的包名之前,而且按照字母顺序排列。正例:packagecom.sunsharp;importjava.util.ArrayList;//java自身的包importjava.util.List;importorg.apache.http.*;//第三方的包importcom.snusharp.common.*;//程序自身的包说明:这样可以防止书写失误,也易于阅读。正例:【规则1-1-1】源代码文件(.java)的布局顺序是:包、import语句、类。【规则1-1-2】遵循统一的布局顺序来书写import语句,不同类别的import语句之间用空行分隔。【规则1-1-3】if、else、elseif、for、while、do,switch等语句独占一行,执行语句不得紧跟其后。不论执行语句有多少都要加{}。Java&Android编码规范5/31if(varible1varible2){varible1=varible2;}反例:下面的代码执行语句紧跟if的条件之后,而且没有加{},违反规则。if(varible1varible2)varible1=varible2;说明:这样便于程序阅读和查找。正例:length=10;width=5;//矩形的长与宽关系较密切,放在一起。strCaption=“Test”;反例:length=10;strCaption=“Test”;width=5;1.2对齐说明:对于利用Eclipse等编程工具的,可以设置TAB键为4个空格代替。消除不同编辑器对制表符处理的差异。说明:这样使代码便于阅读,并且方便注释。do…while语句可以例外,while条件可与}在同一行。正例:voidfunction(intvar){while(condition){〖建议1-1-1〗源程序中关系较为紧密的代码应尽可能相邻。【规则1-2-1】一般禁止使用制表符,必须使用空格进行缩排。缩进为4个空格。【规则1-2-2】程序的分界符‘{’和‘}’应独占一行,‘}’同时与引用它们的语句左对齐。{}之内的代码块使用缩进规则对齐。Java&Android编码规范6/31doSomething();//与{}缩进4格}//与引用它们的模块左对齐}反例:voidfunction(intvar){while(condition){doSomething();}}正例:int[][]number={{1,1,1},{2,4,8},{3,9,27},{4,16,64}};正例:width=50;length=20;height=40;1.3空行空格说明:空行起着分隔程序段落的作用。适当的空行可以使程序的布局更加清晰。下列情况应该总是使用空行:一个源文件的两个片段(section)之间类声明和接口声明之间常量声明区域之后【规则1-2-3】多维的数组如果在定义时初始化,按照数组的矩阵结构分行书写。【建议1-2-1】相关的赋值语句等号对齐。【规则1-3-1】不同逻辑程序块之间要使用空行分隔。Java&Android编码规范7/31方法声明之前方法内的局部变量和方法的第一条语句之间一个方法内的两个逻辑段之间,用以提高可读性正例:voiddoSomething(){Connectioncon=null;//数据库连接booleanreturnParameter=false;//返回//空一行//if代码的注释if(reconsign==null)returnfalse;}反例:voiddoSomething(){Connectioncon=null;//数据库连接booleanreturnParameter=false;//返回//if代码的注释if(reconsign==null)returnfalse;}正例:!value~value++countnumber[i]=5;box.getWidth();【规则1-3-2】一元操作符如“++”、“--”、“!”、“~”、(类型)等前后不加空格。“[]”“.”这类操作符前后不加空格。Java&Android编码规范8/31说明:空格的多少根据上下文调整。正例:value=oldValue;total+value;number+=2;说明:方法名后紧跟左