当前位置: 首页 > news >正文

规范说明: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 注释

http://www.jsqmd.com/news/710075/

相关文章:

  • 2026年宁波韩国留学机构品牌推荐:五家优选对比解析 - 科技焦点
  • 2026天津专业汽车维修机构横评:从资质到售后的深度对比 - 资讯焦点
  • Akagi麻将AI助手:3分钟快速上手完整指南
  • 终极APK安装器:在Windows电脑上运行安卓应用的完整指南
  • 抖音下载神器:douyin-downloader终极免费批量下载解决方案
  • AI模型在数据可视化与Web开发中的能力边界测试
  • 新手必看!降ai率软件怎么选?降迹灵AI全解析 - 资讯焦点
  • ROOST开源安全工具链:构建透明可扩展的安全生态
  • 炉石传说脚本终极指南:5分钟快速上手与4大实战场景
  • sd-webui-controlnet完整实践指南:掌握AI绘画精准控制的终极方法
  • 终极番茄小说下载器:Rust重构的高效离线阅读解决方案
  • 阿里巴巴最新Spring全家桶学习笔记全网首次公开!
  • 基于Mistral-7B与LoRA的高效多标签分类实践
  • OpCore Simplify:15分钟搞定黑苹果OpenCore配置的终极方案
  • 3大核心功能全面解锁:艾尔登法环高帧率优化终极方案
  • LLM在软件开发中的挑战与优化实践
  • 耶鲁OpenHand机械手硬件架构深度解析:从开源设计到工业应用的技术实现
  • WPS-Zotero技术实现深度指南:跨平台文献管理架构解析
  • 猫抓浏览器资源嗅探扩展:专业媒体内容捕获解决方案
  • 2026 年视频拍摄新趋势,专业技巧助您脱颖而出
  • Meshroom:当照片遇见魔法,普通人也能成为3D造物主
  • Web Scraper Chrome扩展:高效网页数据提取的智能解决方案
  • Elasticsearch 评分精度实战:评分偏差、失真问题全方位解决方案
  • SigLIP 2架构解析:轻量级图像安全分类模型实践
  • 3步掌握G-Helper:华硕笔记本性能控制的终极指南
  • 如何用Mermaid Live Editor彻底改变你的图表工作流:3个颠覆性应用场景
  • 4大硬件模块伪装技术:EASY-HWID-SPOOFER内核级设备指纹保护方案
  • Windows下用MSYS2编译老版本FFmpeg,遇到`shr`汇编错误?手把手教你修改mathops.h搞定
  • Fluent仿真结果不准?试试用Workbench参数化自动优化你的网格和边界条件
  • DynamicVLA:动态物体操作的视觉-语言-动作模型解析