如何制定符合标准的JAVA编码规范?
- 内容介绍
- 文章标签
- 相关推荐
本文共计5149个文字,预计阅读时间需要21分钟。
版本记录 + 设计者 + 版本 + 日期 + 备注无V1.0.0 2022-04-19 初始版本,无V1.0.1 2022-06-06 调整文件格式,并完善部分章节内容
1.背景
1.1 愿景编码是一门艺术,优雅编码,规范编码,愿大家早日成为编码大师
版本记录- 初中级程序员,参考编码的一些规范和建议。
- 代码审批人员,审核代码时,一些参考的指标和方向。
- 本文所举例的代码缺陷,改造参考方向,难免存在理解错误或偏差之处,欢迎批评指正。
- 本文中所举案例,主要是用于记录作者在开发中遇到的一些不规范现象,一些编码技巧及调优方向,随着时间沉淀会持续总结和更新。
/** * 返回内容解析工具类 参考Objects.requireNonNull(T, String)源码,便于把为空的数据,在一个地方抛出异常 方便在调用的地方,不再做 空(null,empty) 判断 * * @author wangling * @date 2022/5/25 */ public class FeignResponseBodyUtil { /** * 获取安全的数据 接口返回的内容一定存在值 * * @param responseBody 接口返回体 * @param exceptionMessage 可变参数,异常文本描述 * @param <T> 数据类型 * @return 一定存在值的数据 */ public static <T> T getSaleData(FeignResponse<T> responseBody, String... exceptionMessage) { String messageInfo = null; if (exceptionMessage.length > 0) { messageInfo = exceptionMessage[0]; } checkDataSuccess(responseBody); T object = responseBody.getData(); if (object == null || (object instanceof Collection && ((Collection<?>) object).isEmpty()) || (object.getClass().isArray() && Array.getLength(object) < 1) || (object instanceof String && StringUtils.isBlank((String) object))) { String dataType = object.getClass().getTypeName(); String exceptionMess = String.format("返回数据类型 %s 数据为空", dataType); String message = Optional.ofNullable(messageInfo).orElse(exceptionMess); throwException(message); } return responseBody.getData(); } public static void throwException(String message) { throw new BusinessException(String.format("data_null:%s", message)); } /** * 获取非安全数据 * * @param responseBody 接口返回体 * @param <T> 数据类型 * @return 返回数据(数据可能为空) */ public static <T> T getUnsaleData(FeignResponse<T> responseBody) { checkDataSuccess(responseBody); return responseBody.getData(); } /** * 检查接口返回体是否为成功状态 * * @param responseBody 接口返回体 * @param <T> 数据类型 */ public static <T> void checkDataSuccess(FeignResponse<T> responseBody) { if (Objects.isNull(responseBody)) { throw new BusinessException("404:远程服务返回对象为空"); } if (!Objects.equals(responseBody.getCode(), ResultCodeEnum.SUCCESS.getCode())) { String failCode = Objects.nonNull(responseBody.getCode()) ? String.valueOf(responseBody.getCode()) : "SERVICE_FALL_BACK"; String failMsg = StringUtils.isNotEmpty(responseBody.getMessage()) ? responseBody.getMessage() : "远程服务不可用"; throw new BusinessException(failCode + "->" + failMsg); } } } View Code
判断对象是否为空- 作为一名程序员,您一定在研发过程中,或多或少有过排雷采坑的经历。欢迎留言,分享更多编码调优的经验。
- 本文参考《java-开发手册-泰山版》,《代码整洁之道》,《重构2》等编码规范,编码理论知识。欢迎留言探讨书中的相关知识。
微信赞赏
支付宝赞赏
本文共计5149个文字,预计阅读时间需要21分钟。
版本记录 + 设计者 + 版本 + 日期 + 备注无V1.0.0 2022-04-19 初始版本,无V1.0.1 2022-06-06 调整文件格式,并完善部分章节内容
1.背景
1.1 愿景编码是一门艺术,优雅编码,规范编码,愿大家早日成为编码大师
版本记录- 初中级程序员,参考编码的一些规范和建议。
- 代码审批人员,审核代码时,一些参考的指标和方向。
- 本文所举例的代码缺陷,改造参考方向,难免存在理解错误或偏差之处,欢迎批评指正。
- 本文中所举案例,主要是用于记录作者在开发中遇到的一些不规范现象,一些编码技巧及调优方向,随着时间沉淀会持续总结和更新。
/** * 返回内容解析工具类 参考Objects.requireNonNull(T, String)源码,便于把为空的数据,在一个地方抛出异常 方便在调用的地方,不再做 空(null,empty) 判断 * * @author wangling * @date 2022/5/25 */ public class FeignResponseBodyUtil { /** * 获取安全的数据 接口返回的内容一定存在值 * * @param responseBody 接口返回体 * @param exceptionMessage 可变参数,异常文本描述 * @param <T> 数据类型 * @return 一定存在值的数据 */ public static <T> T getSaleData(FeignResponse<T> responseBody, String... exceptionMessage) { String messageInfo = null; if (exceptionMessage.length > 0) { messageInfo = exceptionMessage[0]; } checkDataSuccess(responseBody); T object = responseBody.getData(); if (object == null || (object instanceof Collection && ((Collection<?>) object).isEmpty()) || (object.getClass().isArray() && Array.getLength(object) < 1) || (object instanceof String && StringUtils.isBlank((String) object))) { String dataType = object.getClass().getTypeName(); String exceptionMess = String.format("返回数据类型 %s 数据为空", dataType); String message = Optional.ofNullable(messageInfo).orElse(exceptionMess); throwException(message); } return responseBody.getData(); } public static void throwException(String message) { throw new BusinessException(String.format("data_null:%s", message)); } /** * 获取非安全数据 * * @param responseBody 接口返回体 * @param <T> 数据类型 * @return 返回数据(数据可能为空) */ public static <T> T getUnsaleData(FeignResponse<T> responseBody) { checkDataSuccess(responseBody); return responseBody.getData(); } /** * 检查接口返回体是否为成功状态 * * @param responseBody 接口返回体 * @param <T> 数据类型 */ public static <T> void checkDataSuccess(FeignResponse<T> responseBody) { if (Objects.isNull(responseBody)) { throw new BusinessException("404:远程服务返回对象为空"); } if (!Objects.equals(responseBody.getCode(), ResultCodeEnum.SUCCESS.getCode())) { String failCode = Objects.nonNull(responseBody.getCode()) ? String.valueOf(responseBody.getCode()) : "SERVICE_FALL_BACK"; String failMsg = StringUtils.isNotEmpty(responseBody.getMessage()) ? responseBody.getMessage() : "远程服务不可用"; throw new BusinessException(failCode + "->" + failMsg); } } } View Code
判断对象是否为空- 作为一名程序员,您一定在研发过程中,或多或少有过排雷采坑的经历。欢迎留言,分享更多编码调优的经验。
- 本文参考《java-开发手册-泰山版》,《代码整洁之道》,《重构2》等编码规范,编码理论知识。欢迎留言探讨书中的相关知识。
微信赞赏
支付宝赞赏

