关于 142-java-functional-programming
这是一个面向 Java 开发者的函数式编程技能,用于评估和改进不可变性、纯函数及函数组合等代码实践。它涵盖 Stream、Optional、Lambda 和较新的 Java 特性,并要求先确认编译与语言版本兼容性。
主要功能
- 01改进不可变对象与纯函数
- 02应用 Lambda、方法引用与函数接口
- 03使用 Stream 与 Optional 惯用写法
- 04采用函数组合与高阶函数
- 05按 Java 版本检查特性兼容性
适用场景
- 01重构 Java 代码以改善不可变性
- 02将代码改为安全使用 Stream 或 Optional
- 03分离副作用并整理核心逻辑
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ jabrena/ plinth --skill 142-java-functional-programming安装后在 Claude Code 中输入/142-java-functional-programming确认已加载。
附带文件references/142-java-functional-programming.md
详细介绍
Java 函数式编程规则
识别并应用 Java 中的函数式编程原则,以提升不可变性、表达力和可维护性。
此技能涵盖哪些内容?
- 不可变对象和 Records(JEP 395)
- 无副作用的纯函数
- 函数式接口:
Function、Predicate、Consumer、Supplier、自定义@FunctionalInterface - Lambda 表达式和方法引用
- Stream API:filter/map/reduce 管道、并行流、
toUnmodifiable*收集器 Optional的惯用用法:使用map/flatMap/filter/orElse*,而非isPresent()+get()- 函数组合:
andThen/compose - 高阶函数:记忆化、柯里化、部分应用
instanceof和switch的模式匹配(Java 21)- 使用密封类和接口(Java 17)构建完备的领域层次结构
- Switch 表达式(Java 14)、Stream Gatherers(JEP 461)
- 效果边界分离:将副作用置于边界,核心逻辑保持纯粹
- 不可变集合:
List.of()、Collectors.toUnmodifiableList()
**范围:**本参考资料按示例(每个核心领域的良好/不良代码模式)组织。请根据适用示例采纳建议。
约束
在应用任何函数式编程改动之前,确保项目能够编译。如果编译失败,请立即停止——在项目成功编译之前不要继续。确认 maven-compiler-plugin 的 source/target 支持所使用的 Java 特性。
- **必须:**在应用任何改动前运行
./mvnw compile或mvn compile - **安全:**如果编译失败,请立即停止——在项目成功编译之前不要继续
- **验证:**确认 maven-compiler-plugin 的 source/target 支持所使用的 Java 特性
- **验证:**应用改进后运行
./mvnw clean verify或mvn clean verify - **应用改动前:**阅读参考资料,了解每种函数式编程模式的详细良好/不良示例、约束和保护措施
- **边界情况:**如果请求范围不明确,请先停止并提出澄清问题,再应用改动
- **边界情况:**如果缺少必需的输入、文件或工具,请说明缺少的内容,并询问是否要继续获取设置指导
何时使用此技能
- 使用函数式编程改进代码
- 应用函数式编程
- 使用函数式编程重构代码
- 安全地将 Java 代码重构为使用流或 Optionals
- 改进 Java 中的不可变性和纯函数
工作流
- 在进行函数式重构前编译项目
运行 ./mvnw compile 或 mvn compile,如果编译失败,请立即停止。
- 确认 Java 特性兼容性
确认 maven-compiler-plugin 的 source/target 支持计划采用的函数式特性。
- 阅读函数式编程参考资料并评估代码
阅读 references/142-java-functional-programming.md,找出不可变性、纯函数和函数组合方面的改进机会。
- 应用函数式编程改进
实施选定的函数式重构,同时将副作用保留在边界处。
- 通过完整构建进行验证
应用改进后运行 ./mvnw clean verify 或 mvn clean verify。
参考资料
详细指导、示例和约束,请参阅 references/142-java-functional-programming.md。
评论
支持 Markdown