news 2026/4/27 19:27:27

规范说明:Controller 层编码规范

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
规范说明:Controller 层编码规范

Controller 层编码规范

1. 总则

  1. 职责单一

    Controller 只负责:接收参数 → 基础校验 → 调用 Service → 返回统一成功结构。

    不编写业务逻辑、不处理异常、不做数据计算。

  2. 异常统一

    禁止在 Controller 使用try-catch,所有异常直接抛出,由全局异常处理器统一处理。

  3. 快速失败(Fail-Fast)

    参数非法、数据异常立即抛出异常,不继续执行后续逻辑。

  4. 风格统一

    命名、注释、日志、结构、返回格式在项目内保持完全一致。

  5. 安全规范

    不打印敏感信息(密码、密钥、身份证、手机号等)。


2. 命名规范

2.1 类命名

  • 命名格式:XxxController

  • 采用大驼峰,望文知义

  • 示例:AccountControllerUserControllerDictController

2.2 方法命名

  • 登录:login

  • 新增:add/create

  • 查询单条:get

  • 查询列表:list

  • 分页查询:page

  • 局部更新:updateXxx

  • 全量更新:update

  • 删除:delete/remove

  • 状态修改:updateValid/changeStatus

2.3 变量命名

  • 小驼峰,语义化,禁止拼音、无意义缩写

  • 禁止:datamapparamstrobj

  • 推荐:encryptedDatapasswordParamscurrentUser


3. JavaDoc 注释规范

3.1 类注释

必须包含:用途说明、<p>段落。

java

/** * 账号管理 API * * <p>提供用户登录、密码修改、账号状态管理等账号相关操作接口</p> */

3.2 方法注释

必须包含:功能说明、特殊约束、@param@return

返回值统一格式:

plaintext

{@link Result}&lt;{@link String}&gt; {@link Result}&lt;{@link Void}&gt; {@link Result}&lt;{@link List}&lt;{@link User}&gt;&gt;

示例:

java

/** * 用户登录 * * <p>前端请求 Content-Type 为 application/x-www-form-urlencoded</p> * * @param account 用户账号 * @param password 登录密码 * @return 登录成功返回认证令牌 {@link Result}&lt;{@link String}&gt; */

4. 参数校验规范

  1. 非空、格式等基础校验在 Controller 完成

  2. 业务规则校验下沉到 Service

  3. 批量非空优先使用:

    java

    StringUtils.isAnyBlank(a, b, c);
  4. 校验失败抛出:

    • 业务校验不通过:BusinessException

    • 参数格式 / 类型错误:IllegalArgumentException


5. 异常处理规范

  1. Controller 禁止任何 try-catch

  2. 业务异常:throw new BusinessException("提示信息")

  3. 参数异常:throw new IllegalArgumentException("格式错误")

  4. 空指针、类型转换异常由全局异常兜底

  5. 禁止手动返回Result.error(...)


6. 日志规范

6.1 格式

plaintext

【模块】操作描述,关键字段=xxx

示例:

java

log.info("【账号登录】account={}", account); log.warn("【修改密码】加密数据为空");

6.2 级别

  • 正常流程:info

  • 非法请求 / 参数异常:warn

  • 系统异常:error(全局统一打印)

6.3 禁止打印

  • 密码、加密密钥、加密原文

  • 身份证、手机号、地址等隐私信息


7. 代码结构固定模板

java

@XxxMapping("/xxx") public Result<T> method(参数) { // 1. 日志 log.info("【模块】操作,信息={}", ...); ​ // 2. 基础参数校验 if (StringUtils.isBlank(xxx)) { throw new BusinessException("xxx不能为空"); } ​ // 3. 参数解析/转换 ​ // 4. 调用 Service ​ // 5. 返回成功结构 return Result.success(data); }

8. HTTP 方法使用规范

  • 查询:@GetMapping

  • 新增:@PostMapping

  • 局部更新:@PatchMapping

  • 全量覆盖更新:@PutMapping

  • 删除:@DeleteMapping


9. 返回值规范

  1. 统一返回Result<T>

  2. 无返回数据使用Result<Void>

  3. 泛型必须明确,便于文档识别

  4. 禁止自定义错误返回结构


10. 工具方法规范

  1. 必须编写完整 JavaDoc

  2. 明确声明抛出异常

  3. 类型安全,避免不安全强转

  4. 通用方法设为public static


11. 禁止行为(红线)

  1. ❌ 禁止在 Controller 编写业务逻辑

  2. ❌ 禁止使用try-catch

  3. ❌ 禁止返回Result.error()

  4. ❌ 禁止无意义变量名(data、map、param)

  5. ❌ 禁止打印敏感信息

  6. ❌ 禁止冗余 null 判断

  7. ❌ 禁止缺失 JavaDoc 注释

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/27 19:26:36

静电监测与时频信号分析滚动轴承故障诊断【附代码】

✅ 博主简介&#xff1a;擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导&#xff0c;毕业论文、期刊论文经验交流。 ✅ 如需沟通交流&#xff0c;扫描文章底部二维码。&#xff08;1&#xff09;静电传感器有限元仿真与最优安装位置确定&#xff1a;为了实…

作者头像 李华
网站建设 2026/4/27 19:25:21

OpenMDW:机器学习模型开源许可证的创新实践

1. 开源机器学习模型许可证的现状与痛点在机器学习领域&#xff0c;模型的开源共享已经成为推动技术进步的重要方式。但现有的开源许可证大多是为传统软件设计的&#xff0c;无法很好地适应机器学习模型的特殊需求。我见过太多团队在模型共享时陷入法律和技术困境——从模型权重…

作者头像 李华
网站建设 2026/4/27 19:24:14

Copilot Next自动化工作流配置失效终极诊断包(含3个未公开env变量、2个被文档忽略的activationEvents、1份可直接导入的launch.json黄金模板)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Copilot Next自动化工作流配置失效的根源性认知 Copilot Next 的自动化工作流并非简单的触发-执行模型&#xff0c;其配置失效往往源于底层依赖链的隐式断裂。当工作流突然停止响应或返回 401 Unauthor…

作者头像 李华
网站建设 2026/4/27 19:23:45

脚本更新--低精度(visium)量化不同状态之间的空间关系

作者,Evil Genius 今天我们更新脚本,量化不同状态之间的空间关系。 我们解析一下: 对于visium,直径是55um,一个spot内部是co-localization。 临近的6个点,是adjacency。 更大的范围(r = 2-15),区域组成,分析丰度之间的相关性。 也就是说,随着区域面积增大,分析…

作者头像 李华
网站建设 2026/4/27 19:22:42

iOS激活锁绕过工具applera1n:专业解决A9-A11设备离线激活难题

iOS激活锁绕过工具applera1n&#xff1a;专业解决A9-A11设备离线激活难题 【免费下载链接】applera1n icloud bypass for ios 15-16 项目地址: https://gitcode.com/gh_mirrors/ap/applera1n 面对二手iPhone的激活锁界面&#xff0c;或是因忘记Apple ID密码而无法使用设…

作者头像 李华