Java语言规范
Java程序的结构
package—0或1条,出现在程序最开始的地方
Import—0或1条,用于引入Java提供的API
class—创建自定义的类,public修饰的class类的类名需要跟文件名完全保持一致
main方法—可执行Java程序的入口,具体介绍查看2.Java的main方法为什么这么写
{}—左花括号表示代码块/方法/类的开始,右花括号代表代码块/方法/类的结束
代码语句—每个语句都是以;结束
注释—分为行注释、块注释、文档注释
行注释://描述内容,用于注释代码语句
块注释:/*描述内容,用于注释无效代码、多行描述*/
文档注释:/**描述内容,用于类描述和方法描述*/、
文档注释中的关键参数:
* @author 开发人员
* @param 方法参数
* @return 方法返回值
* @throw 方法异常
* @version :jdk版本
* @description:描述
* @date :日期
编程规范
JAVA源文件
要求:
-
源文件的扩展名必须是.java
-
源文件的文件名必须和源程序中public修饰的类名相同,如果源文件中的源程序无public修饰的类,文件名可以随意
-
源文件中public修饰的类有且只能有一个
规范:
-
⼀个 Java 源⽂件只定义⼀个类,不同的类使⽤不同的源⽂件定义。
-
让 Java 源⽂件的主⽂件名与该源⽂件中定义 的 public 类同名。
Java文件样式约定
-
版权信息
版权信息必须在 java 文件的开头,比如:/** * Copyright @ 2000 Shanghai XXX Co. Ltd. * All right reserved. * @author: gcgmh * date: 2008-12-22 */ -
Package/Imports
package行要在import行之前,import中标准的包名要在本地包名之前,而且按照字母顺序排序
如果import行中包含了同一个包中的不同子目录,则应该用*来处理 -
Class用来解释类
/**
*
*/
- Class Fields是类的成员变量
/**
*
*/
-
存取方法(类的设置与获取成员函数)
接下来是类变量的存取方法,它只是简单的用来将类的变量赋值获取值的话,单行注释就可以 -
构造方法
递增的方式写,参数多的构造方法写在后面,解释参数及作用:单行注释 -
克隆方法
-
类方法
/**
*set the packet counters
*param r1-……
*param r2-……
*……
*/
-
toString方法
一般情况下每个类都应该定义toString方法 -
main方法
普通类,考虑置入一个main方法,其中包含用于测试类的代码,main方法应该写在类的底部 -
文档化
必须用javadoc来为类生成文档,不仅是因为它是标准,因为它可以被各种Java编译器所认可,使用@author是不被推荐的,因为代码不应该是被个人拥有的 -
缩进
缩进应该是每行两个空格,不要在源文件中保存tab字符,在使用不同的源代码管理工具时,tab字符将因为用户设置的不同而扩展为不同的宽度 -
页宽
页宽为80字符,源代码一般不会超过这个宽度,并导致无法完整显示,但这一设置也可以灵活调整 -
{}应该单独作为一行
-
括号 左括号和后一个字符不应该出现空格,右括号和前一个字符不应该出现空格
-
几个避免
- 在处理String的时候尽量使用StringBuffer类,StringBuffer是构成String类的基础,String将StringBuffer类封装起来了,可以释放不必要的空间和节约时间 StringBuffer属于线程安全,相对为重量级,StringBuilder属于非线程安全,相对为轻量级
- 避免不必要的使用关键字synchronized,应该在必要的时候再使用,这是一个避免死锁的好方法,必须使用时尽量控制范围,最好在块级控制
- 避免使用java.util.Vector类
因为"Unlike the new collection implementations, Vector is synchronized.",所以使用java.util.Vector类在性能上会有所减低。 - 尽量使用接口而不是一个具体的
比方如下需求,给定一个SQL语句,返回一个对象的列表,实现中用java.util.ArrayList实现,于是定义方法为:
上面的方法存在一个问题,当getObjectItems内改用Vector或LinkedList实现,外部类必须做相应更改。一个更好的方法是定义返回值为java.util.AbstractList更合适:public java.util.ArrayList getObjectItems(String sql)
这样即使更改实现,外部类也不必做相应更改。public java.util.AbstractList getObjectItems(String sql) - 避免使用索引来调用数据库中间层组件返回的结果集
而应用字段名来存取结果集:for(int i=1; i<=dt.getRowCount(); i++){ String field1 = dt.getField(i, 0).toString(); …… }
这样在数据库设计更改或查询的SQL语句发生变化时,不会影响到程序的执行。for(int i=1; i<=dt.getRowCount(); i++){ String field1 = dt.getField(i, "field1").toString(); …… }
JAVA源程序
要求:
-
在一个源程序中可以有多个类,但是这些类中只允许有一个public修饰的类
-
源程序中由public修饰的类的类名,必须和源文件的文件名一致
-
一个类中只允许有1/0个程序入口main方法
规范:
-
有main方法的类是源程序的入口,一般存在于主类
-
多个类可以有多个程序入口,但是建议一个源程序只使用一个程序入口
常用规则
-
尽量使用完整英文描述
-
采用适用于相关领域的术语
-
采用大小写混合使名字可读
-
尽量少些缩写,如果用了,必须符合整个工程中的统一定义
-
避免使用长名字(小于15个字母)
-
避免使用类似的名字。或者仅仅是大小写不同的名字
-
避免使用下划线(静态常量除外)
标识符
- 包(Package)的命名:
Package的名字应该采用完整的英文描述符,都是由一个小写单词组成。并且包名前缀总是一个顶级域名,通常是com、edu、gov、mil、net、org等
- 类(Class)的命名规则:
类名应该是一个名词,采用大小写混合的方式,每个单词的首字母大写,尽量保证类名简洁而富于描述 使用完整单词,避免缩写词,除非工程内有统一缩写规范或该缩写词被更广泛使用,像 URL , HTML
- 接口(Interface)的命名规则:
基本与Class的命名规则类似,在满足Class命名规则的基础之上,保证第一个字母为"I"
便于与普通的Class区别开,其实现类名取接口名的第二个字母到最后,且满足类名的命名规范
- 枚举(Menu)的命名规范:
基本与Class类似,在满足Class命名规则的基础之上,保证第一个字母为"E",便于与Class区别开
- 异常(Exception)的命名规则:
异常通常采用e表示异常,对于自定义的异常类,其后缀必须是Exception。如:BusinessException
- 方法的命名规则:
方法名是一个动词,采用大小写混合的方式,第一个单词首字母小写,其后单词的首字母大写,方法名尽可能描述出该方法的动作行为。返回类型是boolean 值的方法一般由"is"或"has"来开头
- 参数命名规则:
第一个单词首字母小写,其后单词的首字母大写,参数名不允许以下划线或美元符号开头
- 常量字段的命名:
静态常量字段全部采用大写字母,单词之间使用下划线分隔
-
循环计数器 通常采用i,j,k或者counter
-
注释:增加代码的清晰度,保持注释的简洁,注释出为什么做这些,而不是做了什么
注释分类: 类 类的目的,即类所完成的功能,注释出采用的变量,采用文档注释 接口 设置接口的目的,它应该如何使用以及如何不被使用 成员方法 对于设置与获取成员方法,在成员变量已有说明的情况下,可以不加注释; 普通成员方法要求说明完成什么功能,参数含义是什么,返回什么 普通成员方法内部注释: 控制结构,代码做了什么以及为什么这样做,处理顺序等 实参/形参 参数含义、以及其它任何约束或前提条件 字段/属性 字段描述 局部变量 无特别意义的情况下不加注释/** *这是文档注释 */ /* *注释不再使用的代码,不要轻易删代码 */ //单行注释,用来说明业务逻辑,代码段和暂时变量的声明

浙公网安备 33010602011771号