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源文件

要求:

  1. 源文件的扩展名必须是.java

  2. 源文件的文件名必须和源程序中public修饰的类名相同,如果源文件中的源程序无public修饰的类,文件名可以随意

  3. 源文件中public修饰的类有且只能有一个

规范:

  1. ⼀个 Java 源⽂件只定义⼀个类,不同的类使⽤不同的源⽂件定义。

  2. 让 Java 源⽂件的主⽂件名与该源⽂件中定义 的 public 类同名。

Java文件样式约定

  1. 版权信息
    版权信息必须在 java 文件的开头,比如:

    /**
    * Copyright @ 2000 Shanghai XXX Co. Ltd.
    * All right reserved.
    * @author: gcgmh
    * date: 2008-12-22
    */
    
  2. Package/Imports
    package行要在import行之前,import中标准的包名要在本地包名之前,而且按照字母顺序排序
    如果import行中包含了同一个包中的不同子目录,则应该用*来处理

  3. Class用来解释类

/**
*
*/
  1. Class Fields是类的成员变量
/**
*
*/
  1. 存取方法(类的设置与获取成员函数)
    接下来是类变量的存取方法,它只是简单的用来将类的变量赋值获取值的话,单行注释就可以

  2. 构造方法
    递增的方式写,参数多的构造方法写在后面,解释参数及作用:单行注释

  3. 克隆方法

  4. 类方法

/**
*set the packet counters
*param r1-……
*param r2-……
*……
*/
  1. toString方法
    一般情况下每个类都应该定义toString方法

  2. main方法
    普通类,考虑置入一个main方法,其中包含用于测试类的代码,main方法应该写在类的底部

  3. 文档化
    必须用javadoc来为类生成文档,不仅是因为它是标准,因为它可以被各种Java编译器所认可,使用@author是不被推荐的,因为代码不应该是被个人拥有的

  4. 缩进
    缩进应该是每行两个空格,不要在源文件中保存tab字符,在使用不同的源代码管理工具时,tab字符将因为用户设置的不同而扩展为不同的宽度

  5. 页宽
    页宽为80字符,源代码一般不会超过这个宽度,并导致无法完整显示,但这一设置也可以灵活调整

  6. {}应该单独作为一行

  7. 括号 左括号和后一个字符不应该出现空格,右括号和前一个字符不应该出现空格

  8. 几个避免

  • 在处理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修饰的类

  2. 源程序中由public修饰的类的类名,必须和源文件的文件名一致

  3. 一个类中只允许有1/0个程序入口main方法

规范:

  1. 有main方法的类是源程序的入口,一般存在于主类

  2. 多个类可以有多个程序入口,但是建议一个源程序只使用一个程序入口

常用规则

  • 尽量使用完整英文描述

  • 采用适用于相关领域的术语

  • 采用大小写混合使名字可读

  • 尽量少些缩写,如果用了,必须符合整个工程中的统一定义

  • 避免使用长名字(小于15个字母)

  • 避免使用类似的名字。或者仅仅是大小写不同的名字

  • 避免使用下划线(静态常量除外)

标识符

  1. 包(Package)的命名:

Package的名字应该采用完整的英文描述符,都是由一个小写单词组成。并且包名前缀总是一个顶级域名,通常是comedugovmilnetorg

  1. 类(Class)的命名规则:

类名应该是一个名词,采用大小写混合的方式每个单词的首字母大写,尽量保证类名简洁而富于描述 使用完整单词,避免缩写词,除非工程内有统一缩写规范或该缩写词被更广泛使用,像 URL , HTML

  1. 接口(Interface)的命名规则:

基本与Class的命名规则类似,在满足Class命名规则的基础之上,保证第一个字母为"I"

便于与普通的Class区别开,其实现类名取接口名的第二个字母到最后,且满足类名的命名规范

  1. 枚举(Menu)的命名规范:

基本与Class类似,在满足Class命名规则的基础之上,保证第一个字母为"E",便于与Class区别开

  1. 异常(Exception)的命名规则:

异常通常采用e表示异常,对于自定义的异常类,其后缀必须是Exception。如:BusinessException

  1. 方法的命名规则:

方法名是一个动词,采用大小写混合的方式,第一个单词首字母小写,其后单词的首字母大写,方法名尽可能描述出该方法的动作行为。返回类型是boolean 值的方法一般由"is"或"has"来开头

  1. 参数命名规则:

第一个单词首字母小写,其后单词的首字母大写,参数名不允许以下划线或美元符号开头

  1. 常量字段的命名:

静态常量字段全部采用大写字母,单词之间使用下划线分隔

  1. 循环计数器 通常采用i,j,k或者counter

  2. 注释:增加代码的清晰度,保持注释的简洁,注释出为什么做这些,而不是做了什么

    注释分类:
    	类       类的目的,即类所完成的功能,注释出采用的变量,采用文档注释
    	接口     设置接口的目的,它应该如何使用以及如何不被使用
    	成员方法  对于设置与获取成员方法,在成员变量已有说明的情况下,可以不加注释;
          	普通成员方法要求说明完成什么功能,参数含义是什么,返回什么
    	普通成员方法内部注释:  控制结构,代码做了什么以及为什么这样做,处理顺序等
    	实参/形参 参数含义、以及其它任何约束或前提条件
    	字段/属性   字段描述
    	局部变量  无特别意义的情况下不加注释
    
    /**
    *这是文档注释
    */
    /*
    *注释不再使用的代码,不要轻易删代码
    */
    //单行注释,用来说明业务逻辑,代码段和暂时变量的声明
    
posted @ 2024-03-04 15:34  杰尼龟的小龟壳  阅读(117)  评论(0)    收藏  举报