§ 代码开发
§ 业务代码层级
| Mapper | XxxxMapper.xml | src/main/resources/mapper/admin |
|---|---|---|
| Mapper | XxxxMapper.java | src/main/java/cn/com/yusys/yusp/***/repository/mapper/ |
| Entity | Xxxx.java(实体) | src/main/java/cn/com/yusys/yusp/***/domain/ |
| Resource | XxxxResource.java | src/main/java/cn/com/yusys/yusp/***/web/rest/ |
| Service | XxxxService.java | src/main/java/cn/com/yusys/yusp/***/service/ |

§ 代码注释
§ 类/接口注释
类,接口描述,一般作详细描述。按照常用的说明顺序呢排列,主要包括:
- 类的描述,以。或.结束
- 类设计的目标,完成什么样的功能一般和类的描述合并在一起
- 主要的类使用如何使用该类,包括环境要求,比如线程是否安全,并发性要求以及使用约束
- 已知的BUG
- 描述类的修改历史:修改人+日期+简单说明
- @author作者、@version版本,@see参照,@since开始版本信息
示例(来自spring-framework):
/**
* Delegate for resolving constructors and factory methods.
* Performs constructor resolution through argument matching.
*
* @author Juergen Hoeller
* @author Rob Harrop
* @author Mark Fisher
* @author Costin Leau
* @since 2.0
* @see #autowireConstructor
* @see #instantiateUsingFactoryMethod
* @see AbstractAutowireCapableBeanFactory
*/
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
§ 方法注释
方法描述说明,主要对方法的描述,参数、返回值、抛出异常进行说明。
示例(来自spring-framework):
/**
* Resolve the factory method in the specified bean definition, if possible.
* {@link RootBeanDefinition#getResolvedFactoryMethod()} can be checked for the result.
* @param mbd the bean definition to check
* @return a BeanWrapper for the new instance
* @throws Exception in case of any kind of processing failure
1
2
3
4
5
6
2
3
4
5
6
§ 修改注释
在修改处一定要添加注释,说明修改人,修改原因,修改内容,修改时间
§ 开发约束
§ 日志开发
§ 日志级别
| 日志级别 | 级别描述 | 信息类别 |
|---|---|---|
| DEBUG | 细粒度的级别。对出错以及系统调试时输出的信息、事件进行记录。程序的关键路径,输出较频繁。 | 调试信息 |
| INFO | 粗粒度的级别。在正常运行状态中,对重要流程/事件以及表示系统健康度的信息、事件进行记录。 此级别不允许输出SQL语句等调试用敏感信息。 | 一般信息 |
| WARN | 有潜在风险的、不会造成大危害的错误发生(往往由应用餐部因素造成,如不正确的输入数据等)。 | 错误信息 |
| ERROR | 应用发生错误(包括业务错误和技术错误),但后续流程还能继续进行。 | 错误信息 |
| FATAL | 应用发生严重错误(技术型异常),应用服务停止。 | 错误信息 |
系统级日志级别:ERROR
§ 日志打印
Debug级别日志输出,需要增加debug状态判断
if (logger.isDebugEnabled()) {
logger.debug("菜单信息:{}", adminSmMenu);
}
1
2
3
2
3
日志输出时,避免逻辑操作,如下日志输出,user.getRole().getId()会存在空指针的情况
if ("admin".equals(user.getName) {
logger.debug("菜单信息:{}", user.getRole().getId());
}
1
2
3
2
3