个人遵守的 JAVA 开发规范

需遵守 JAVA 基本命名规范,以下列举需要着重注意的地方和我们的一些规则。

命名风格

  1. 统一采用驼峰标识。
  2. 不允许使用汉语拼音命名,特殊含义的除外。
  3. 遇到缩写如XML时,需全部大写,如loadXMLDocument()。
  4. 局部变量及输入参数不要与类成员变量同名(set方法与构造函数除外)
  5. 常量必须都是大写字母,名称包含多个词时,使用下划线来分割,并且保证命名有完整含义,比如ORDER_TYPE。枚举值也是常量,遵守该规则。
  6. 项目名与模块名之间,使用”-”隔开,不再使用”_”。区分代码和项目的命名规则。
  7. Package 名必须全部小写,尽量使用单个单词。
  8. Interface 接口名统一采用首字母为I。
  9. 注意单类中,变量名的一致性。例如,在一个service中的几个方法,都定义有useName变量,或者进行简写uname等,不论全写还是简写,前后方法对于同一变量的命名都需要保持一致,便于可读。
  10. 在同一个方法中,不建议一个变量表示多个意义不同的数值。

方法名前缀

  1. Service层接口方法名称,统一前缀。
  2. 查询方法前缀: get、find。
  3. 搜索性查询方法前缀:query、search。
  4. 统计类前缀:count。
  5. 操作类前缀:insert、add、create、update、delete。
  6. 可能还有其他前缀。
  7. 同包名下的service类,尽量统一所有方法的前缀,以便于以后对方法进行或事物或权限或业务等控制。

Javadoc 注释

Javadoc 使用 /* / 注释。

  1. 所有的源文件添加javadoc注释,其中列出说明、作者、日期等
  2. 所有方法添加javadoc注释,列举方法功能说明(重要方法需要举例说明),同时还需要对方法参数的含义提供解释,对返回结果、异常等作出说明。如果有接口,只需要对接口方法进行注释说明。
    请查看此篇文章:IDEA 类、方法注释模板

失效代码注释

  1. 失效代码注释,使用/…/界定。不允许使用//。在注释首行写明,注释掉该段代码的原因以及为何保留不删去的原因。
  2. 由//界定,注释代码细节。所有重要的操作步骤,建议都在开始前注释说明。
  3. 抽取的私有方法,也使用//来进行说明。
  4. 说明写在代码操作前,除非变量定义,否则不推荐使用行末注释。如方法:
1
2
3
4
5
6
7
(int a){
int count = 0; // 定义计数值count
// 如果a小于1,则……
if(a < 1){
count++; // 计数加1。 不推荐行末这样注释
}
}

异常处理

  1. Service方法对外抛出异常,统一为RuntimeException。需要自己定义继承于RuntimeException的顶级异常类以及继承于顶级异常类的各个子异常类,以供在开发中使用。
  2. 异常类定义不用特别细,低级异常细节对于调用方来说,意义不大。比如,数据库连接不上或者cache连接不上,或者代码原因产生查询异常等等,这些对于调用方来说,都是应用异常,所以直接使用一类异常进行定义即可。
  3. 如果要抛出异常,重新抛出的异常必须保留原来的异常。统一定义为throw new NewException(“信息”, e) 或者 throw new NewException( e)。
  4. 如果是代码需要,编程时主动抛出异常,定义为throw new NewException(“信息”)。
  5. 在所有异常被捕获但没有重新抛出的地方必须要记入log日志。如果是分布式开发,那么service层,异常抛出前,也必须将原异常记入log日志中。
  6. 对于空catch块,需要注明原因,否则不允许出现。

代码质量要求

方法

  1. n 方法参数在10个以内。太多的方法参数影响代码可读性。考虑用值对象代替这些参数或重新设计。
  2. n 方法长度在60行以内。复杂业务方法80行以内,复杂方法可按照功能点分拆成私有方法。注释不算在内。
  3. n 方法内,嵌套层数最多不超过6层。即if,while,do,for等等关键词组成的代码块,如
1
2
3
4
5
6
7
if(……){
for(……){
if(……){
……
}
}
}
  1. n 这类多关键词逻辑的嵌套使用,不要超过6层。
  2. n 如果单关键词语句,嵌套层数不超过3层。

其他要求

  1. 单类的文件长度2000行以内(包含注释)

命名

数据库 Mysql

表名称

  1. 命名:业务模块缩写_表名。
  2. 每个表必须以其所属的业务模块的名称缩写作为其名称前缀。
  3. 表名代表了该表的业务含义,不能使用拼音。
  4. 前缀缩写与表名,表名多个单词之间,均使用”_”来分隔。sys_user

列名称

  1. 统一使用大写
  2. 主键:id。不含前缀。如id。
  3. 列名,多个词之间使用”_”隔开。如user_name。
  4. 列名如果使用简写,相同含义的必须要前后统一。
  5. 通用性字段,比如,CREATETIME,或者CREATE_TIME,在同一个项目中必须统一,不允许一张表使用CREATE_TIME,另一张表使用CREATE_DATE,出现两种命名不同的方式。

字段类型

  1. 原则上,我们定义字段的类型,需要对业务要求进行预估,本着用小不用大的原则来设计。

整数类型

  1. TINYINT,1字节
  2. SMALLINT,2字节
  3. MEDIUMINT,3字节
  4. INT,4字节
  5. BIGINT,8字节
  6. 在定义整数的字段时,类型状态等字段,使用TINYINT即可。不允许使用INT、BIGINT。
  7. 主键可以使用BIGINT或者INT。
  8. 其他诸如权重值、计数值等字段,按照实际业务预估,选择类型。

字符串

  1. CHAR,VARCHAR,TINYBLOB/ TINYTEXT,BLOB/ TEXT,MEDIUMBLOB/ MEDIUMTEXT,LONGBLOB/ LONGTEXT。
  2. CHAR的使用需要看具体业务,如果该字段下所有的值为定长,比如,商品的全站唯一码,所有的码长均相同,这样的情况下才可以使用。
  3. VARCHAR字段使用,长度也需要按照业务进行预估。其长度超过255时,将占用2字节。一般情况下,UTF-8字符下,最大长度会达到21845。因此,在文本到了一定的值,是使用TEXT还是使用VARCHAR,需要做个评估。一般来说,能用VARCHAR,尽量使用VARCHAR,而不是TEXT。
  4. BLOB是二进制字符串,TEXT是非二进制字符串。两者都可存放大容量的信息。BLOB区分大小写。

时间

  1. DATE,3字节
  2. DATETIME,8字节
  3. TIMESTAMP,4字节
  4. TIME,3字节
  5. YEAR,1字节