JAVA编程规范_第1页
JAVA编程规范_第2页
JAVA编程规范_第3页
JAVA编程规范_第4页
JAVA编程规范_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

1、java编码规范目录1.格式31.1缩进31.2换行51.2.1一个表达式占一行51.2.2一个表达式的长度超过一行允许的最大长度51.3空白71.3.1空行71.3.2空格72.命名82.1基本规则82.2包、类、方法、变量和常量的命名规则92.2.1包92.2.2类92.2.3接口102.2.4方法102.2.5变量112.2.6常量123.注释文档121. 格式1.1 缩进一般的缩进是用制表符(tab)和空格,但制表符包含的空格个数有可能不同,所以规定四个空格作为缩进排版的一个单位。下面是一些缩进应用的例子:定义类:public class myclass *定义内部类:public c

2、lass outerclass *class innerclass *定义类的属性和方法:public class myclass private int myint = 0; public string mystr = null; void method(int j) *静态代码区域:static *for循环:for (int j = 0; j <= 10; j+) *if和else:if (k < 0) *else if (k > 0) *else *try、catch和finally:try *catch (exception e) *finally *switch:

3、switch (value) case 0: * break; default: * break:while:while (+k <= j) *do-while:do * while (+k <= j);1.2 换行 尽量避免一行的长度超过80个字符,因为很多终端和工具不能很好处理之(用于文档中的例子应该使用更短的行长,长度一般不超过70个字符)。1.2.1 一个表达式占一行属性定义表达式:private double x = math.random(); private double y = math.random();上述写法不可取,应写为:private double x =

4、 math.random(); private double y = math.random();public int x,y,z; 也应该改为:public int x = 0;public int y = 0;public int z = 0;另外要注意,在定义属性时,要声明属性的作用域(private、protected和public),以及初始值。 其他表达式:if (x > 0) x+; 也应该改为:if (x > 0) x+;1.2.2 一个表达式的长度超过一行允许的最大长度基本规则: 在一个逗号后面断开 在一个操作符前面断开 宁可选择较高级别(higher-level

5、)的断开,而非较低级别(lower-level)的断开 新的一行应该与上一行同一级别表达式的开头处对齐 如果以上规则导致你的代码混乱或者使你的代码都堆挤在右边,那就代之以缩进8个空格。以下是断开方法调用的一些例子: somemethod(longexpression1, longexpression2, longexpression3, longexpression4, longexpression5); var = somemethod1(longexpression1, somemethod2(longexpression2, longexpression3); double length

6、 = math.sqrt(math.pow(x,2,0),math.pow(y,2,0); 以下是两个断开算术表达式的例子。前者更好,因为断开处位于括号表达式的外边,这是个较高级别的断开。 longname1 = longname2 * (longname3 + longname4 - longname5) + 4 * longname6; / prefer longname1 = longname2 * (longname3 + longname4 - longname5) + 4 * longname6; /avoid 以下是两个缩进方法声明的例子。前者是常规情形。后者若使用常规的缩进方式

7、将会使第二行和第三行移得很靠右,所以代之以缩进8个空格。 /conventional indentation somemethod(int anarg, object anotherarg, string yetanotherarg, object andstillanother) * /indent 8 spaces to avoid very deep indents private static synchronized horkinglongmethodname(int anarg, object anotherarg, string yetanotherarg, object and

8、stillanother) * if语句的换行通常使用8个空格的规则,因为常规缩进(4个空格)会使语句体看起来比较费劲。比如:/dont use this indentationif (condition1 && condition2) | (condition3 && condition4) | !(condition5 && condition6) /不好的换行 dosomethingaboutit(); /易使这行被忽视/use this indentation insteadif (condition1 && condit

9、ion2) | (condition3 && condition4) |!(condition5 && condition6) dosomethingaboutit();/or use thisif (condition1 && condition2) | (condition3 && condition4) |!(condition5 && condition6) dosomethingaboutit(); 这里有三种可行的方法用于处理三元运算表达式:alpha = (alongbooleanexpression

10、) ? beta : gamma;alpha = (alongbooleanexpression) ? beta : gamma;alpha = (alongbooleanexpression) ? beta : gamma; 1.3 空白1.3.1 空行空行将逻辑相关的代码段分隔开,以提高可读性。下列情况应该总是使用两个空行:1一个源文件的两个片段(section)之间。2类声明和接口声明之间 。下列情况应该总是使用一个空行:1两个方法之间2块注释或单行注释之前。3一个方法内的两个逻辑段之间,用以提高可读性。 4方法内的局部变量和方法的第一条语句之间。1.3.2 空格下列情况应该使用空格:1

11、一个紧跟着括号的关键字应该被空格分开,例如: while (true) * for (*) * 注意:空格不应该置于方法名与其左括号之间。这将有助于区分关键字和方法调用。2空白应该位于参数列表中逗号的后面。3所有的二元运算符,除了".",应该使用空格将之与操作数分开。一元操作符和操作数之间不因该加空格,比如:负号("-")、自增("+")和自减("-")。例如: a += c + d; a = (a + b) / (c * d); while (d+ = s+) n+; printsize("size i

12、s " + foo + "n"); 4for语句中的表达式应该被空格分开,例如: for (expr1; expr2; expr3) 5强制转型后应该跟一个空格,例如: mymethod(byte) anum, (object) x); mymethod(int) (cp + 5), (int) (i + 3) + 1);2. 命名2.1 基本规则1. 使用可以准确说明变量/字段/类的完整的英文描述符。例如,采用类似 firstname,grandtotal 或 corporatecustomer 这样的名字。虽然象 x1,y1 或 fn 这样的名字很简短,输入起

13、来容易,但是我们难以知道它们代表什么、结果是什么含义,因而使代码难以理解、维护和改进。 2. 采用该领域的术语。如果用户称他们的“客户” (clients) 为“顾客” (customers),那么就采用术语 customer 来命名这个类,而不用 client。许多程序开发者会犯的一个错误是,不去使用工业或领域里已经存在着很完美的术语时,却生造出一些普通词汇。 3. 采用大小写混合,提高名字的可读性。对于由多个单词构成的名称,一般应该采用小写字母,但是类和接口的名字的首字母,以及任何中间单词的首字母应该大写。 4. 尽量少用缩写,但如果一定要使用,就要谨慎地使用。这意味着应该保留一个标准缩写

14、的列表,明智地从中选取,并且在使用时保持一致。例如,想对单词“number”采用缩写,那么可从 nbr,no 或者 num 中选取一个,说明一下采用了哪一个(具体是哪个倒无所谓),并且只使用这一种形式。 5. 避免使用长名字(最好不超过 15 个字母)。 虽然 physicalorvirtualproductorservice 看起来似乎是个不错的类名,但是这个名字太长了,应该考虑重新给它起个短一点的名字,比如象 offering。 6. 避免使用相似或者仅在大小写上有区别的名字。例如,不应同时使用变量名 persistentobject 和 persistentobjects,以及 thes

15、qlinputstream 和 thesqlinputstream。7. 避免使用下划线作为名字的首末字母。以下划线为首末字母的名字通常为系统保留,除预处理定义之外,一般不用作用户命名。更重要的是,下划线经常造成麻烦而且难输入,所以尽量避免使用。2.2 包、类、方法、变量和常量的命名规则2.2.1 包一个唯一包名的前缀总是全部小写的ascii字母并且是一个顶级域名,通常是com,edu,gov,mil,net,org,或1981年iso 3166标准所指定的标识国家的英文双字符代码。包名的后续部分根据不同机构各自内部的命名规范而不尽相同。这类命名规范可能以特定目录名的组成来区分部门(depar

16、tment),项目(project),机器(machine),或注册名(login names)。例子:package com.sun.eng;package org.apache.struts;package com.apple.quicktime.v2; 2.2.2 类类名是个一名词,描述对象或事物,采用大小写混合的方式,每个单词的首字母大写。尽量使你的类名简洁而富于描述。使用完整单词,避免缩写词(除非该缩写词被更广泛使用,像url,html)。例子:public class raster *public class imagesprite *public abstract class k

17、eyadapter implements keylistener *2.2.3 接口接口用来描述一个对象的功能或提供的服务,用名词或形容词命名,大小写规则与类名相似。例子:public interface actionlistener public void actionperformed(actionevent e);public interface runnable public void run();public interface accessible public context getcontext();2.2.4 方法1方法名是一个动词,采用大小写混合的方式,第一个单词的首字母小

18、写,其后单词的首字母大写。例子:public class myimage extends image public void flush() *public image getscaledinstance() *public class account private int balance = 0; public void withdraw(int amount) deposit(-1 * amount); public void deposit() this.balance += amount; 2javabean中的属性对应的方法,要用get/is和set开头,属性类型为boolean的

19、用is。例子:public class user private string name = null; private boolean valid = false; public void setname(string name) = name;public string getname() return ;public void setvalid(boolean valid) this.valid = valid;public boolean isvalid() return this.valid;2.2.5 变量1用名词定义变量,变量名应简短且富于描

20、述。变量名的选用应该易于记忆,即,能够指出其用途。尽量避免单个字符的变量名,除非是一次性的临时变量。临时变量通常被取名为i,j,k,m和n,它们一般用于整型;c,d,e,它们一般用于字符型。例子:public class customer private address address = null; private vector openorders = null; private int old = 0; public void mymethod() for(int j = 0; j < 10; j+) * 2所有实例常量,均采用大小写混合的方式,第一个单词的首字母小写,其后单词的首

21、字母大写,且对实例常量的调用要用this修饰。变量名不应以下划线或美元符号开头,尽管这在语法上是允许的。例子:public class atomicadder private int count = 0; public atomicadder(int count) this.count = count;public synchronized int fetchandadd(int value) int temp = this.count; this.count += value; return temp;3集合类型的变量命名一般用名词的复数例子:public class myclass pri

22、vate string items = new string2; private list users = new arraylist(); *4类变量(类的静态变量) 应该全部大写,单词间用下划线隔开。例子:public class myclass private static myclass instance = new myclass(); public myclass() *2.2.6 常量类常量和ansi常量的声明,应该全部大写,单词间用下划线隔开。(尽量避免ansi常量,容易引起错误)例子:public static final int min_width = 4;public static final int max_width = 999;public static final int get_the_cpu = 1;public static final byte max_value = 255;public static final class type = byte.class;3. 注释文档3.1 主要目的程序的接口文档是为了其他人能够正确而快速的使用你的程序;

温馨提示

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

最新文档

评论

0/150

提交评论