# scala2

Правило задаёт Copilot стиль Scala по гайду Databricks: неизменяемость, чистые функции, именование. Пригодится, если пишете на Scala 2.12 или 2.13.

- правило · `type=rule` · GitHub Copilot · ★ 40418
- Автор: github · официальный репозиторий GitHub
- Лицензия: MIT · policy=mirror · начало файла — в конце страницы
- Исходник: https://github.com/github/awesome-copilot/tree/HEAD/instructions/scala2.instructions.md
- Обновлён: 2026-10-23
- HTML: https://affpapa.org/nevibecode/rules/scala2

## Что делает

Правило подключается к файлам `**/*.scala`, `**/build.sbt` и `**/build.sc` и подсказывает Copilot, как писать код в стиле Databricks Scala Style Guide. Основа — неизменяемость: `val` вместо `var`, неизменяемые коллекции из `scala.collection.immutable`, параметры case-классов без `var`, изменение через конструктор копирования. Отдельно прописаны чистые функции: детерминированные, без побочных эффектов, с явными типами там, где эффекты есть.

Дальше идут синтаксические мелочи, которые Copilot обычно путает. Строки до 100 символов, отступ в 2 пробела, для длинных списков параметров — 4. Правило 30: метод короче 30 строк, класс — меньше 30 методов. Фигурные скобки обязательны для многострочных блоков, суффикс `L` у long-литералов пишется заглавной, скобки в вызовах должны совпадать с объявлением метода.

Есть разделы про импорты, сопоставление с образцом и анонимные функции. Импорты — абсолютные, wildcard только для имплиситов или от шести сущностей, порядок с пустыми строками между группами. В pattern matching советует матчить по типу, а не разворачивать все поля case-класса: развёрнутый вариант ломается при изменении полей. Правило опирается на гайд Databricks, поэтому расходится с проектами, где принят другой стиль — скажем, отступ в 4 пробела или `var` в горячем цикле. Это повод проверить, что уже настроено в вашем линтере.

## Требования
- Работает с: Databricks

## Установка

### GitHub Copilot (родная платформа)

**Вручную: положить файлы**
- Файл: `.github/instructions/scala2.instructions.md` — Поле applyTo задаёт, к каким файлам применять

### Claude Code

**Вручную: положить файлы**
- Файл: `.claude/rules/scala2.md` — Поле paths во frontmatter ограничивает файлы: applyTo из источника → paths

### Codex

**AGENTS.md**
- Codex читает AGENTS.md: вставьте текст правила туда

### Cursor

**Вручную: положить файлы**
- Файл: `.cursor/rules/scala2.mdc` — Во frontmatter: description, globs, alwaysApply. applyTo из источника → globs, иначе правило само не подключится

### Windsurf (Devin Desktop)

**Вручную: положить файлы**
- Файл: `.devin/rules/scala2.md`

### Cline

**Вручную: положить файлы**
- Файл: `.clinerules/scala2.md`

Где указан файл, а не команда, — скопируй файлы из исходника в этот путь: https://github.com/github/awesome-copilot/tree/HEAD/instructions/scala2.instructions.md

## Когда брать
- удержать неизменяемость в коде на Scala 2.12/2.13
- отделить чистые функции от кода с побочными эффектами
- выровнять именование классов, методов и констант
- привести импорты и порядок групп к одному виду
- переписать pattern matching так, чтобы он не ломался при смене полей

## Примеры запросов агенту
- Перепиши этот файл на Scala по правилам scala2: убери var и мутабельные коллекции
- Проверь мой build.sbt и код на Scala 2.13 по правилам scala2
- Отрефактори этот pattern matching по scala2 — матчи по типу, без разворота всех полей

## Похожие
- [clojure-write](https://affpapa.org/nevibecode/skills/clojure-write.md) — скилл · 2000 установок
- [golang-code-style](https://affpapa.org/nevibecode/skills/golang-code-style.md) — скилл · 44200 установок
- [python-code-style](https://affpapa.org/nevibecode/skills/python-code-style.md) — скилл · 16456 установок
- [sql-queries](https://affpapa.org/nevibecode/skills/sql-queries.md) — скилл · 4500 установок
- [golang-samber-lo](https://affpapa.org/nevibecode/skills/golang-samber-lo.md) — скилл · 38500 установок
- [golang-samber-mo](https://affpapa.org/nevibecode/skills/golang-samber-mo.md) — скилл · 38200 установок

Из того же набора: [github/awesome-copilot](https://affpapa.org/nevibecode/by/github/awesome-copilot.md) — 770 карточек

_Часть страницы не вошла по размеру — она есть в HTML-версии._

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
