BackEnd New Simple Project

数据结构设计规范 1.1. 基本原则 遵循第三范式,适度冗余提升性能,并保证数据的一致性。 符合命名规范( 注意关键字 、长度限制)。 使用正确的数据类型、合适的长度。 不允许用业务数据建立主键,每张表必须有一个逻辑主键. --Postgresl 主键uuid,不建议自增数字做主键.

BackEnd New Simple Project
Photo by Microsoft 365 / Unsplash

通用选型

0. Java version OpenJDK 11
1. 基础框架 Springboot 2.2.5.RELEASE
2. 持久层ORM框架 Sring data jpa
3. RESTFul API
4. Git版本控制 
5. 构建工具 Gradle 6.3.0
6. CheckStyle 8.1.3
7. Junit 单元测试 Junit4+ coverage 80%+
8. 打包及部署 Docker && K8s
9. 日志 logback
10. DB migration flyway 5.2.1
11. DB pool HikariPool
12. DB encryption KMS
13. OSS AWS S3
14. IDE Idea --plugin lombok
15. DB Postgresql 12 --AWS RDS

Java编码规范

1.1. 命名规范
1.1.1. Package命名 [NAMING.PKG-2]
Package命名 [NAMING.PKG-2]

描述:

Package名必须为小写字母或数字,且必须以字母开头;

要求包名为com.tongiwei.***
示例:

package com.tongiwei.***.user;

1.1.2. Class命名 [NAMING.NCL-2]
描述:

Class名首字母必须大写,如果是某个Interface的实现,要求命名采用Interface

+Impl

示例:

public interface Manager{};
public class ManagerImpl implements Manager{
}

1.1.3. Interface命名 [NAMING.NITF-2]
描述:

Interface命名首字母必须大写

示例:

public interface Manager{
}

1.1.4. Exception Class命名 [NAMING.NE-2]
描述:

Exception class命名必须以Exception结尾

示例:

public class XXXtException extends Exception{
}

1.1.5. Unit Test Class命名 [NAMING.NE-2]
描述:

Unit test class命名必须以Test结尾

示例:

public class FooTest extends TestCase{
}

1.1.6. Enum type命名 [NAMING.NENUM-2]
描述:

Enum type命名首字母必须大写

示例:

private enum Grade { 
    A, B, C, D, F 
};

1.1.7. Methods命名 [NAMING.NMP-2]
描述:

Method命名首字母必须小写

示例:

public class NMFixed {
    void method () {  // FIXED
    }
}

1.1.8. Local variables命名 [NAMING.NLV-2]
描述:

Local variable命名首字母必须小写

示例:

private int example = 0;

1.1.9. 常量命名 [NAMING.USF-2]
描述:

所有用 ”final”、”static” 修饰的变量命名要求全大写

示例:

public static final int SIZE = 10;
private static final Logger LOGGER;

1.1.10. . 类名禁止使用java内置类名 [NAMING.DJLO-2]
描述:

类名禁止使用java内置类名

错误示例:

public class Integer{
}

1.1.11. . 标示符禁止使用java关键字 [NAMING.DJLO-2]
描述:

标示符禁止使用java关键字

错误示例:

private String enum;
private int assert;

1.1.12. . 禁止使用sun预留包名 [NAMING.RPKG-2]
描述:

禁止使用sun预留包名

错误示例:

package java.rules.naming;

1.1.13. . 禁止仅通过大小写区分变量 [NAMING.UUVN-4]
描述:

禁止仅通过大小写区分变量

错误示例:

int foo = 9;
int Foo = 9;

1.2. 注释规范
1.2.1. java文件头注释 [FORMAT.MCH-2]
描述:

所有java文件需要在文件头添加如下注释段:

/**
 * $Author$
 * $Rev$
 * $Date::    
 *
 */
package xx.xx.xx;
import xx.xx;

1.2.2. java类注释 [JAVADOC.PJDC-2]
描述:

所有java类需按以下格式添加类注释:

/**
 * <p>Title: 应用模块名称</p>
 * <p>Description: 代码描述</p>
 */
public final class MyClass

1.3. 格式规范
1.3.1. 代码长度限制 [FORMAT.LL-2]
描述:

每行代码长度不能超过120个字符

1.3.2. 每个声明占用一个代码行 [FORMAT.OSPL-2]
描述:

每个声明占用一行代码

错误示例:

int i = a + b; return i;

正确示例:

int i = a + b;
return i;

1.3.3. 使用括号分隔复杂表达式 [FORMAT.APAREN-3]
描述:

使用括号分隔复杂表达式提高代码可读性

错误示例:

if (i >= j && i >= 0)

正确示例:

if ((i >= j) && (i >= 0))

1.3.4. 避免过于复杂的判断表达式
if ( workTimeSpecials.size() > 0 && !workTimeSpecials.get(0).getIsRest().equals("0"))
|| workTimeSpecials.size() == 0 && !isWorkDay) {
return;
}
遇到这样的表达式,请使用Extract Local Variable提取为意义明确的变量。

1.3.5 其他代码格式规范,请遵守CheckStyle 规范

数据结构设计规范

1.1. 基本原则
遵循第三范式,适度冗余提升性能,并保证数据的一致性。
符合命名规范( 注意关键字 、长度限制)。
使用正确的数据类型、合适的长度。
不允许用业务数据建立主键,每张表必须有一个逻辑主键.
--Postgresl 主键uuid,不建议自增数字做主键.

1.2. 命名规范
schemas: 建议用***
CHARSET: UTF-8
Language : en
表的命名:4-6个字母 模块(缩写)+ 下划线+表含义,例:setting_offertype
表名与字段名使用下划线区分单词,以增加可读性