SuperAPI AI 工具集

java-best-practices

编程与开发

查看项目

更新于 10-16 01:48

技能介绍

用途:在编写或审查 Java 代码时,按 VirtusLab 工程师整理的主见式规范执行现代 Java(21+)实践,明确剔除过时写法。核心原则包括组合方法模式(每个方法只做一件事、保持简短)、参考 Effective Java、优先复用标准库与成熟库、组合优于继承,并用 GRASP 原则指导面向对象设计。主要能力与要求:用 record 承载不可变数据对象,替代 Lombok @Value/@Data/@Getter 与手写 POJO;用密封类与接口建模代数数据类型;用支持模式匹配的 switch 表达式并尽量穷尽;Java 21+ 在 switch 中显式处理 null;用 instanceof 模式匹配、文本块、var(类型明显时)、record 模式、Java 22 的 _ 未命名变量;用 List.of/Map.of/Set.of 等不可变集合及 getFirst()/getLast()/reversed();优先使用 isBlank()、strip()、repeat()、formatted()、lines() 等字符串工具。空安全方面默认非空,仅在系统边界用 @Nullable,不传 null、不返回 null,可能无结果的方法返回 Optional,且不把 Optional 用作字段、参数或集合元素,不直接调用 get()。异常处理使用 Java 异常机制而非错误码或 Result 包装,优先非受检异常,不吞异常,避免泛化捕获,使用多 catch。命名遵循 PascalCase/camelCase/UPPER_SNAKE_CASE,布尔方法用 is/has/should/can 前缀,公共 API 不用缩写。建议统一代码风格,默认包级私有,能用方法引用就用,导入不用通配符;若项目含 Spotless,改动后对编辑文件运行 ./gradlew spotlessApply 或 mvn spotless:apply。流与集合用 filter/map/flatMap/toList,中间操作保持无副作用,简单副作用优先 Iterable.forEach。测试推荐 JUnit 5,可用 Spock,命名统一为 methodName_shouldExpectedBehavior_whenCondition,遵循 Arrange-Act-Assert,保持测试独立。并发推荐虚拟线程处理 I/O 密集任务,认为不可变小对象是安全并发基础,Java 25 可用 StructuredTaskScope。明确不推荐 RxJava、避免过早引入响应式、避免不必要的 CompletableFuture 链。I/O 用 Files、Path.of()、内置 HttpClient,时间统一用 java.time,不用 Date/Calendar/SimpleDateFormat。限制:该资料为有主见的规范,部分内容面向 Java 21/22/25,需相应 JDK 版本;具体项目适配与工具链细节暂未提供。