zoukankan      html  css  js  c++  java
  • java服务端项目开发规范

    更新内容

    2015-03-13
    (请先更新svn的mybatis.xml、BaseMapper.java、Pager.java文件)
    加入测试类规范
    加入事物控制规范
    加入mapper接口规则

    注意问题

    一、一定要严格按照本文档的规范进行开发,有利于后期维护和修改。
    二、每完成一个接口,需要在maven测试包中加入相应的测试方法。确保测试通过。详见测试类的添加
    三、所有项目文件编码统一使用UTF8

    新项目需要做如下操作:
    1.修改工作空间编码为UTF8。
    2.修改项目的编码为UTF8(项目右键-属性-resource)。
    3.修改文件编码为UTF8(以后新建文件的默认编码为UTF8),包括properties、xml、java、java class文件等所有的编码都改为UTF-8。

    Eclipse修改工作空间编码方法:

    Eclipse修改文件编码方法:

    命名规范

    包命名规范

    目的:包的命名规范应当体现出项目资源良好的划分

    控制层包命名规范:公司名称.开发组名称.项目名称.mod.模块名.controller
    例如:com.osen.app.mod.模块名.controller

    逻辑层实现类包命名规范:公司名称.开发组名称.项目名称.mod.模块名.service.impl
    例如:com.osen.app.mod.模块名.service.impl

    逻辑层接口类包命名规范:公司名称.开发组名称.项目名称.mod.模块名.service
    例如:com.osen.app.mod.模块名.service

    DAO层实现类所在包命名规范:公司名称.开发组名称.项目名称.mod.模块名.dao.impl
    例如:com.osen.app.mod.模块名.dao.impl (不含实现类可以忽略)

    DAO层接口类所在包命名规范:公司名称.开发组名称.项目名称.mod.模块名.dao
    例如:com.osen.app.mod.模块名.dao

    POJO类与映射文件所在包命名规范:公司名称.开发组名称.项目名称.mod.模块名.dao
    例如:com.osen.app.mod.模块名.dao

    全局公共类、接口类所在包命名规范:公司名称.开发组名称.项目名称.mod.common
    例如:com.osen.app.mod.common

    全局公用dao类所在包命名规范:公司名称.开发组名称.项目名称.mod.common.dao
    例如:com.osen.app.mod.common.dao

    全局公用逻辑接口类所在包命名规范:公司名称.开发组名称.项目名称.mod.common. service
    例如:com.osen.app.mod.common. service

    全局公用逻辑实现类所在包命名规范:公司名称.开发组名称.项目名称.mod.common. service.impl
    例如:com.osen.app.mod.common. service.impl

    全局工具类所在包命名规范:公司名称.开发组名称.项目名称.tools
    例如:com.osen.app.tools

    类命名规范

    service接口命名:
    业务逻辑接口的命名以POJO名称来制定,IPOJO名称Service
    命名规范:以大写字母"I"开头,如果有多个单词,每个单词头字母大写
    例如:IStudentService

    service接口实现类命名:
    业务逻辑接口实现类的命名以POJO名称来制定
    命名规范:将实现的接口名称的首字母"I"去掉,以"Impl作为结尾",如果有多个单词,每个单词头字母大写。
    例如:StudentServiceImpl

    Controller类命名:
    命名规范:Controller的命名以POJO名称来制定,POJO名称+Controller
    例如:
    一个POJO名称为User,其对应的Controller为UserController

    POJO命名:
    与表名一致,如果表名有下划线”_”,则POJO类去掉下划线,首字母大写。(表前缀不需要加入,例如:zz_content表,zz为表前缀,对应的pojo类不需要加zz)
    例:User.java,MenuRole.java

    Mybatis映射文件命名:
    实体类名+Mapper.xml
    如:UserMapper.xml

    DAO类命名:
    实体类名+Mapper.java
    如:UserMapper.java

    类变量命名:
    命名规范:变量名首字母必须小写,如果该变量名有多个单词组成,后面的单词首字母大写,单词与单词之间不要使用"_"做连接,变量名访问控制必须为私有, 可以对其增加setter与getter方法。
    例如:

      private int studentAge;
      public int getStudentAge()  {
          return studentAge;
      }
    
      public void setStudentAge(int studentAge)  {
          this.studentAge=studentAge;
      }
    

    常量命名:
    命名规范:所有字母大写,如果有多个单词组成,单词与单词之间以” _“隔开。而 且该变量必须是公共、静态、final类型
    例如:public static final String USER_NAME=”userName“;

    方法命名:
    命名规范:首字母必须小写,如果该变量名有多个单词组成,后面的单词首字母 大写,单词与单词之间不要使用"_"做连接。
    例如:public int checkLogin(String name,String pwd){}

    注释规范

    注释规范是整个开发规范中最为重要的组成部分,必须严格执行。
    ALT+SHIFT+J快捷键
    可以用eclipse的导入注释模版的形式
    Window->Preferences->Java->Code Style->Code Templates
    到wiki上下载注释的模版文件

    类的注释:
    作用:注释整个类,简单概述该类作用。
    书写规范:类的注释必须写在该类的声明语法之前。在注释中要描述该类的基 本作用,作者,日期,版本,公司名称。
    格式:

      /* *  
    * 类功能描述:(大致描述类的功能)  
    * @author:编写者名称
    *  
    * @version: 类文件的版本号 从1.0开始(自己确定版本号的增改  
    * 情况), 修改情况(修改时间、作者、改动情况)
    *@Since:2012-12-12
    * 相关数据如:(便于理解本类的一些常量数据及某些数据的格式  
    * 或认为比较重要的数据,如果没有可省略)  
    */  
    

    类的声明语法
    例如:

    /**
    * Title:管理员模块数据处理类
    * Description: 两个数相加
    *  
    * @author 张三
    *@Since:2012-12-12
    * @version V1.0
    */
    public class AdminDAO
    

    变量、常量注释:
    作用:简单描述该变量的意义。
    书写规范:变量注释必须写在变量定义之前,简单描述其代表的意义。
    格式:

    /**  
      * 变量功能描述:(大致描述变量的功能)
      */
    例如:
      /**
      *定义年龄变量
      */
    public int age;
    

    方法注释:
    作用:对该方法功能简单描述,其参数、返回值意义的注解。
    书写规范:方法注释必须写在方法定义之前。该注释包括:方法其功能的简单 描述,方法的参数、返回值类型、返回值意义简单的描述。
    格式:

      /**  
      * 方法功能说明  
      * @param args (参数类型可以写在参数后,也可以省  
      * 略。每个参数占一行)  
      * @return 输出参数(多种情况写在同一行)   
      * @exception 异常处理类(方法中能够引发的异常,每  
      * 个异常占一行)  
    */  
    

    例如:

    /**
      * 修改管理员密码
      * @param adminId 管理员编号
      * @param oldPassword 旧密码
      * @param password 新密码
    * @return boolean 是否编辑成功
      * @throws UserException
      * @throws ServiceException
      */
    public booleaneditAdminPassword(int adminId,String oldPassword,
    String password) throws UserException,ServiceException;
    

    测试类的添加

    每一个模块完成后,在src/test/java中加入junit测试方法,测试类所在的包的命名在测试的模块所在的包名后加入test,例:
    com.osen.app.mod.模块名.test

    测试类的命名:模块名Test。例如:测试User模块,则测试类为UserTest.java

    事物控制

    事物控制统一在逻辑层的实现类中以注解的形式添加,例如:
    对UserServiceImpl中的addUser方法需要进行事物控制,操作如下:

    1.此方法必须为public
    2.在方法名上边加入
    @Transactional(propagation=Propagation.REQUIRED,rollbackFor=Exception.class)
    此注解含义为:如果当前方法没有事物,则加入事物,如果当前方法存在事物,则使用当前方法的事物。事物所控制的异常类型为Exception,即对所有属于exception的异常进行事物回滚。
    3.具体注解参数根据实际业务需要进行适当添加和修改。

    注意:需要进行事物控制时,在方法名称上边添加事物注解,不要在类名上边添加全局事物注解,以免影响效率。

    mapper接口规则

    每新建一个mapper接口类,需要继承mapper接口基类BaseMapper,例如:
    public interface UserMapper extends BaseMapper

    接口基类BaseMapper还不完善,大家在开发过程中有需要提取公用接口到BaseMapper中时,请及时提出,共同讨论,以便进一步完善。

    之前已经写好的mapper类,如果业务改动量较小,也请添加继承BaseMapper

  • 相关阅读:
    MUI常用脚本及原生JavaScript常用操作元素方法
    cmf5分页相关
    TP5数据库操作方法总结
    mui的选项卡js选中指定项
    thinkphp 5数据库操作
    阻止touchslider事件冒泡,防止左右滑动时出发全局滑动事件
    thinkcmf5 学习笔记
    PHP Fatal error: Call to undefined function thinkfinfo_open()
    phpstudy iis版本 php4.4.5 和 php5.6.7目录权限问题
    手机uc不支持伪元素使用animation动画;移动端background-attachment:fixed不兼容性
  • 原文地址:https://www.cnblogs.com/dreamboy/p/10417836.html
Copyright © 2011-2022 走看看