zoukankan      html  css  js  c++  java
  • Java开发命名规范

    写在最前面


     

    由于Java面向对象编程的特性, 在命名时应尽量选择名词。在命名的时候,最常用的就是驼峰命名法(Camel-Case): 当变量名或函式名是由一个或多个单字连结在一起,而构成的唯一识别字时,首字母以小写开头,每个单词首字母大写(第一个单词除外)。

     

    一、包名的书写规范(Package)

          推荐使用公司或机构的顶级域名为包名的前缀,目的是保证各公司/机构内所使用的包名的唯一性。包名全部为小写字母,且具有实际的区分意义。

      1.1 一般要求

        1、选择有意义的名字,能快速地传达该类的用途。

        2、所有包的命名必须采用小写英文字母。

      1.2 实际应用

        应用系统中经常应用分层,Dao层(数据库访问)、Service层(业务处理)、Web层(页面控制action类)。

        1、包名的前几个为固定名称, 如果是网站的话,采用网站的域名的反写,如果域名还没有确定的话,采用公司固定的几个名称。如:net.vschool

        2、在包名的接下来一个单词为模块的名称。如:用户模块,包名为net.vschool.user

        3、关于模块的访问操作,采用分层形式,一般分为:

           Dao层操作:一般定义在net.vschool.xxx.dao中,其中xxx为模块名称。

           Service层操作:一般定义在net.vschool.xxx.servie中。

           web层操作:一般定义在net.vschool.xxx.action中。

      1.3 如下关于用户模块的例子:

        net.vschool.user

        net.vschool.user.dao

        net.vschool.user.action

        net.vschool.user.service


     

    二、类名的书写规范 (Class)

      类名必须使用名词,如果一个类名内含多个单词,那么各个单词第一个字母大写,后续字母小写,起伏呈驼峰状,人称驼峰式命名。给类名命名时,必须保证准确、简洁且容易理解。尽量使用完整单词,避免使用缩写词(除了大家公认的)

      2.1 一般要求

        1、选择有意义的名字,能快速地传达该类的用途。

        2、参照java驼峰命名法,类名的首字母必须采用大写的形式,如果类名为多词组合而成的话,那么每个词的首字母必须采用大写。如:StudentAnswer.java

        3、当要区别接口类和实现类的时候,可以在类的后面加上“Impl”。 如:接口类:UserInterface.java   接口实现类:UserInterfaceImpl

        4、推荐实体类没有后缀名。

      2.2 实际应用

        应用系统中经常应用分层,Dao层(数据库访问)、Service层(业务处理)、Web层(页面控制action类),每一层的类的名称尽量带上该层后缀。

        1、Dao层

          a、接口类:采用JavaBean+Interface+Dao的形式来定义,即,实体对象+Interface+Dao。   如:用户对象接口类:UserInterfaceDao,其中xxx为模块名称。

          b、实现类:采用JavaBean+Interface+Impl+Dao的形式来定义,即,实体对象         +Interface+Impl+Dao。如:用户对象实现类:UserInterfaceImplDao

        2、Service层

          a、接口类:采用Xxx+Interface+Service的形式来定义,即,模块+Interface+Service。     如:用户管理接口类:UserMsgInterfaceServiec

          b、实现类:采用Xxx+Interface+Impl+Service的形式来定义,即,模块+Interface+Impl+Service。如:用户管理实现类:UserMsgInterfaceImplServiec

        3、Web层(action类)

          a、实现类:采用县Xxx+Operator+Action的形式来定义,即,模块+操作+Action。如:用户模块User+删除操作Delete+Action = UserDeleteAction


     

    三、方法的命名

      3.1 一般要求

        1、选择有意义的名字,能快速地传达该方法的用途。

        2、参照java驼峰命名法,首字母以小写开头,每个单词首字母大写(第一个单词除外)。

      3.2 实际应用

        1、方法表示一种行为,它代表一种动作,最好是一个动词或者动词词组或者第一个单词为一个动词。

        2、属性方法:以get/set开头,其后跟字段名称,字段名称首字母大写。如:getUserName()

        3、数据层方法:只能以insert(插入),delete(删除),update(更新),select(查找),count(统计)开头,其他层方法避免以这个5个单词开头,以免造成误解。

        4、服务层方法,根据方法的行为命名,只描述方法的意义,而不采用方法的目的命名。比如系统的添加新用户,用户可以前台注册,也可以管理员后台添加,方法会被重用,所以最好不要用使用register,采用add会更好写。避免使用与web层相关的方法。

        5、Web层方法最好是贴近web的语言,如register,login,logout等方法。

    四、变量的命名

      4.1 普通变量

        4.1.1 一般要求

          1、选择有意义的名字,能快速地传达该变量的用途。

          2、参照java驼峰命名法,首字母以小写开头,每个单词首字母大写(第一个单词除外)。

        4.1.2 实际应用

          1、变量命名采用基本结构为typeVariableName,使用3字符前缀来表示数据类型。

    数据类型或对象类型

    变量前缀

    备注

    byte

    bye

    1、做数组用时,再加前缀-a,如字符串数组:astr,

    2、自定义类型的变量可以采用本身的名称,把首字母改为小写。

    3、采用名称要能代表在方法中的意义。如果员工列表:employeeList

    char

    chr

    float

    flt

    boolean

    bln

    Integer/int

    int

    short

    sht

    Long/long

    lng

    Double/double

    dbl

    string

    str

     

     

     

     

     

     

     

     

     

     

     

     

     

     

          例如,定义一个整形变量:intDocCount,其中int表明数据类型,后面为表意的英文名,每个单词首字母大写。

          2、变量使用技巧:

              a、在一段函数中不使用同一个变量表示前后意义不同的两个数值。

              b、除非是在循环中,否则一般不推荐使用单个字母作为变量名,i、j、k等只作为小型循环的循环索引变量。

              c、避免用Flag来命名状态变量。

              d、用Is来命名逻辑变量,如:blnFileIsFound。通过这种给布尔变量肯定形式的命名方式,使得其它开发人员能够更为清楚的理解布尔变量所代表的意义。  

              e、如果需要对变量名进行缩写时,一定要注意整个代码中缩写规则的一致性。例如,如果在代码的某些区域中使用intCnt,而在另一些区域中又使用intCount,就会给代码增加不必要的复杂性。建议变量名中尽量不要出现缩写。   

      4.2 静态变量

        1、选择有意义的名字,能快速地传达该变量的用途。

        2、参照java驼峰命名法,采用全部大写的形式来书写,对于采用多词合成的变量采用“_”来连接各单词。如:USER_SIZE


     

    五、Jsp页面名称的书写规范

      1.  全部采用小写的英文字符和”_ ”组成。

      2.  整体采用模块名+操作的形式。如:user_view.jsp

      3.  Jsp页面尽可能与action的意思对应,如UserListAction对应者user_list.jsp


     

    六、注释的书写规范(Javadoc)

      原则:1、注释形式统一在整个应用程序中,使用具有一致的标点和结构的样式来构造注释。2、注释内容准确简洁内容要简单、明了、含义准确,防止注释的多义性,错误的注释不但无益反而有害。

      1、基本注释(必须加)(a)    类(接口)的注释(b)    构造函数的注释(c)     方法的注释(d)    全局变量的注释(e)    字段/属性的注释 备注:简单的代码做简单注释,注释内容不大于10个字即可,另外,持久化对象或VO对象的getter、setter方法不需加注释。

      2、特殊必加注释(必须加)(a)    典型算法必须有注释。(b)    在代码不明晰处必须有注释。(c)     在代码修改处加上修改标识的注释。(d)    在循环和逻辑分支组成的代码中加注释。(e)    为他人提供的接口必须加详细注释。

      注释格式:

        1、单行(single-line)注释:“//……”

        2、块(block)注释:“/*……*/”

        3、文档注释:“/**……*/”

        4、javadoc注释标签语法

          @author   对类的说明标明开发该类模块的作者

          @version   对类的说明标明该类模块的版本

          @see     对类、属性、方法的说明参考转向,也就是相关主题

          @param    对方法的说明对方法中某参数的说明

          @return   对方法的说明对方法返回值的说明

          @exception  对方法的说明对方法可能抛出的异常进行说明。

       

        方法注释:

        例如:

    public class Test extends Button {
    	/**
    	 * 为按钮添加颜色 
    	 * @param color 按钮的颜色
    	 * @return
    	 * @exception (方法有异常的话加)
    	 * @author Administrator
    	 * @Time 2016-11-20 15:02:29
    	 */
    	public voidaddColor(String color){   
    		……  
    		}
    	}
    

      

        全局变量注释:(参考String的注释方式)

        例如:   

    public final class String implements Java.io.Serializable, Comparable<String>,CharSequence
    
        {
    
           /** The value is used for characterstorage. */
    
           private final char value[];
    
           /** The offset is the first index of thestorage that is used. */
    
           private final int offset; 
    
          /** The count is the number of charactersin the String. */   
    
               private final int count;   
    
                   /** Cache the hash code for the string */
    
                   private int hash; // Default to 0……
    
              }
    

        字段/属性注释:

        例如:

    public class EmailBody implements Serializable{
    
           private String id;
    
           private String senderName;//发送人姓名
    
           private String title;//不能超过120个中文字符
    
           private String content;//邮件正文
    
           private String attach;//附件,如果有的话
    
           private String totalCount;//总发送人数
    
           private String successCount;//成功发送的人数
    
           private Integer isDelete;//0不删除 1删除
    
           private Date createTime;//目前不支持定时所以创建后即刻发送
    
           privateSet<EmailList>EmailList;
    
        ……
    
      }
    

      

     

  • 相关阅读:
    js变量如何赋值给css使用?
    前端预览与下载PDF小结
    子组件如何改父组件传过来的值
    TensorRT转换时的静态模式与动态模式
    Linux:搭建GlusterFS文件系统
    OpenFeign传输文件MultipartFile
    Docker:commit、export、import、save、load命令的使用
    Git:代码版本回退
    docker安装Drools Workbench
    ArchLinux:Typora设置gitee图床
  • 原文地址:https://www.cnblogs.com/qwmzjn/p/5796384.html
Copyright © 2011-2022 走看看