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实现,于是定义方法为:public java.util.ArrayList getObjectItems(String sql)
上面的方法存在一个问题,当getObjectItems内改用Vector或LinkedList实现,外部类必须做相应更改。一个更好的方法是定义返回值为java.util.AbstractList更合适:
public java.util.AbstractList getObjectItems(String sql)
这样即使更改实现,外部类也不必做相应更改。
-
避免使用索引来调用数据库中间层组件返回的结果集
for(int i=1; i<=dt.getRowCount(); i++){ String field1 = dt.getField(i, 0).toString(); …… }
而应用字段名来存取结果集:
for(int i=1; i<=dt.getRowCount(); i++){ String field1 = dt.getField(i, "field1").toString(); …… }
这样在数据库设计更改或查询的SQL语句发生变化时,不会影响到程序的执行。
-
JAVA源程序
要求:
-
在一个源程序1中可以有多个类,但是这些类中只允许有一个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
-
注释:增加代码的清晰度,保持注释的简洁,注释出为什么做这些,而不是做了什么
注释分类: 类 类的目的,即类所完成的功能,注释出采用的变量,采用文档注释 接口 设置接口的目的,它应该如何使用以及如何不被使用 成员方法 对于设置与获取成员方法,在成员变量已有说明的情况下,可以不加注释; 普通成员方法要求说明完成什么功能,参数含义是什么,返回什么 普通成员方法内部注释: 控制结构,代码做了什么以及为什么这样做,处理顺序等 实参/形参 参数含义、以及其它任何约束或前提条件 字段/属性 字段描述 局部变量 无特别意义的情况下不加注释
/** *这是文档注释 */ /* *注释不再使用的代码,不要轻易删代码 */ //单行注释,用来说明业务逻辑,代码段和暂时变量的声明
源程序:是一种计算机代码,它的内容会符合一定的语法,经过编译器编译或解释后生成具有一定功能的可执行文件或组件程序 ↩︎