Java 编码指南
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_a36dc51e/java-coding-guide-pro。
技能介绍
要解决的问题
日常 Java 代码里常见的风险并不只是风格不一致:Executors 创建的无界线程池、共享 SimpleDateFormat、用 double 算金额、无盐 MD5 存密码、Optional.get() 前不判断、Random 生成 token 或单号,都会在上线后变成事故。更大的痛点是生成代码时反复做决策:该用 Hutool 还是 commons-lang3,Spring 项目该用 WebClient 还是 OkHttp,JDK 8 能不能用 var。这个指南把这些问题压缩成可执行的编码约定:栈中立、一域一默认、版本门控。
技能如何工作
激活时先执行栈探测:读 pom.xml / build.gradle,一次性确认目标 JDK 和已有依赖,例如 Spring、Hutool、commons-lang3、Guava、Jackson、OkHttp、Lombok、MapStruct。已有同类库就跟随既有库,避免一个项目混用多套字符串或集合工具。若缺低风险能力,直接用 JDK 原生;若缺加密或 Bean 映射这类高风险能力,才触发一次确认,询问引入构件还是手写受控降级。
生成代码前按「域 → 默认」路由读取对应 reference,覆盖 null/string、collection/stream、date/time、IO/HTTP/JSON、concurrency、object mapping、crypto、exception/logging、modern Java、BigDecimal、命名约定和复杂度控制。规则分 S 级和 A 级:S 级是 bug/事故级禁止项,审查既有代码命中时也要提出改写;A 级只约束新生成代码,不主动改既有代码。JDK 特性按最低版本门控,如 var 需 10+、sealed 需 17+、虚拟线程需 21+,JDK 8 项目不能越线。
适用边界
它适合给已有一定 Java 栈的项目做代码生成、审查和修改约束,不适合强行替换项目依赖。Spring 项目优先使用 Spring 自带能力;纯 Java 项目按域选择 JDK 原生或成熟构件。它不纳入 preview/incubator,也不替用户做无依据的库选型。若用户拒绝引入高风险库,输出会降级为手写实现,但必须保留 reference 中的守卫,例如密码场景禁止无盐、hex 输出补零,并在注释中标明受控降级。
使用场景
- 在 Spring Boot 项目中生成 JSON、HTTP 和异常处理代码,按既有 Jackson、WebClient、SLF4J 选型避免混用库。
- 审查 JDK 8 旧代码,标记 Executors、共享 SimpleDateFormat、double 算金额等 S 级事故项并提出改写。
- 为新 Java 模块生成线程池和 CompletableFuture 异步任务,使用有界队列、拒绝策略并避免空吞 InterruptedException。
- 在缺少加密能力的纯 Java 项目中实现密码哈希,触发引入 Hutool crypto 或受控手写 BCrypt 的确认。
适合人员
- 维护 Spring Boot 后端的 Java 工程师:希望生成和审查代码时跟随项目已有 Jackson、WebClient、SLF4J 栈。
- 负责线上服务代码审查的技术负责人:需要识别线程池、日期、金额、加密、异常处理等 S 级事故项。
- 接手 JDK 8 老系统的后端工程师:希望避免误用 var、record、文本块等高版本特性。
- 在纯 Java 项目里实现 crypto 或 Bean 映射的工程师:希望一次确认引入 Hutool/MapStruct 或受控手写降级。