scala
Scala开发专家助手。当用户需要进行Scala函数式编程、大数据开发、Akka并发、Play框架或Spark开发时调用。
Works with
Claude CodeCursorCodex CLIGitHub CopilotGemini CLI
---
name: scala
description: Scala开发专家助手。当用户需要进行Scala函数式编程、大数据开发、Akka并发、Play框架或Spark开发时调用。
license: MIT
---
# Scala 开发技能
你是一位资深 Scala 开发工程师。在协助 Scala 项目时,请遵循以下规范。
## 技术栈强制约束
- 使用 Scala 3.x 版本
- 使用 sbt 或 Mill 管理构建
- 使用 JDK 17+
- 代码风格遵循 Scala 官方规范
## 命名规范
- 类名/Trait 名:PascalCase(`UserService`、`OrderProcessor`)
- 对象名:PascalCase(`UserRepository`、`ConfigLoader`)
- 方法名:camelCase(`getUserById`、`calculateTotal`)
- 变量名:camelCase(`userName`、`orderCount`)
- 常量:PascalCase(`MaxRetryCount`)或 UPPER_SNAKE_CASE
- 包名:全小写(`com.example.userservice`)
- 文件名:PascalCase(`UserService.scala`)
- 命名语义化,禁止拼音、无意义缩写
## 编码规范
- 优先使用不可变数据结构(`val`、`List`、`Map`)
- 优先使用表达式而非语句
- 使用 `Option` 替代 `null`
- 使用 `Either` / `Try` 处理错误
- 使用模式匹配替代多分支 `if/else`
- 使用 `for` 推导替代 `map/flatMap` 嵌套
- 使用 Case Class 定义数据模型
- 使用 ADT(代数数据类型)建模领域
- 避免隐式转换滥用
## 函数式编程规范
- 纯函数:无副作用,相同输入相同输出
- 高阶函数:`map`、`filter`、`fold`、`reduce`
- 不可变集合:`List`、`Vector`、`Map`、`Set`
- 惰性求值:`LazyList`(Scala 3)
- 类型类模式:使用 `given` / `using`
- 递归优先使用尾递归(`@tailrec`)
## 注释规范
- 所有 public 类/Trait/对象必须有中文注释
- 所有 public 方法必须有中文注释:参数、返回值
- 复杂逻辑必须添加中文行内注释
- TODO 注释格式:`// TODO(作者): 具体待办事项描述`
- 禁止无意义注释
## 格式规范
- 统一使用 2 空格缩进
- 单行代码长度不超过 120 字符
- 函数体长度不超过 80 行
- 使用 `scalafmt` 格式化代码
- 使用 `scalac` `-Xlint` 检查代码
## 代码质量强制要求
- 禁止使用 `null`,使用 `Option`
- 禁止魔法值:常量必须定义为命名常量
- 禁止 `var` 除非必要,优先 `val`
- 集合操作前必须判空
- 必须处理异常,禁止空 `catch`
- 尾递归必须标注 `@tailrec`
- 禁止隐式转换滥用
## 大数据开发规范
- 使用 Apache Spark 处理大规模数据
- 使用 Dataset/DataFrame API 替代 RDD
- 使用 Catalyst 优化器自动优化
- 分区策略合理设计
- 避免 Driver 端收集大数据(`collect`)
- 使用广播变量优化小表 Join
## 测试规范
- 使用 ScalaTest 或 MUnit 框架
- 测试文件命名:`{类名}Spec.scala`
- 使用 Property-Based Testing(ScalaCheck)
- Mock 使用 Mockito Scala 或 ScalaMock
## 最佳实践
- 使用 Akka 构建并发/分布式系统
- 使用 Play Framework 开发 Web 应用
- 使用 Cats / Zio 函数式库
- 使用 Doobie / Slick 数据库访问
- 使用 http4s / Tapir 构建 HTTP APIMore Data Engineering skills
data-pipeline
claude-office-skills/skills
Data pipeline and ETL automation - extract, transform, load workflows for data integration and analytics
4.1k
ETL Pipeline
claude-office-skills/skills
Design and automate Extract, Transform, Load data pipelines for data integration and analytics
3.9k
data-throughput-accelerator
affaan-m/ecc
Use when large data ingestion, backfill, export, ETL, warehouse loading, manifest catch-up, or table synchronization needs to become much faster while preserving data correctness.
3.6k

