# object-calisthenics

Правило заставляет GitHub Copilot писать доменный код на C#, TypeScript и Java по принципам Object Calisthenics без вложенных условий и лишних полей.

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

## Что делает

Правило нацелено на файлы с расширениями `.cs`, `.ts` и `.java`. Оно ограничивает структуру доменных классов, сущностей, агрегатов и прикладных сервисов. Модели API, DTO, конфигурационные файлы и инфраструктурный код из-под этих ограничений исключены.

Внутри зафиксированы оригинальные требования Object Calisthenics. Агент обязан держать один уровень отступа в методе, избегать ключевого слова `else`, заменять примитивы отдельными типами-обёртками и инкапсулировать коллекции. Также действуют численные лимиты: не больше 50 строк на класс, до 10 методов в классе, не более 10 классов на пакет и максимум две переменные экземпляра.

Код с несколькими цепочками вызовов через точку здесь тоже не пройдёт проверку из-за закона Деметры. Если проект использует анемичную модель данных, правило спровоцирует переписывание почти каждого класса с примитивными полями.

## Установка

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

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

### Claude Code

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

### Codex

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

### Cursor

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

### Windsurf (Devin Desktop)

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

### Cline

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

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

## Когда брать
- отрефакторить доменный код без ключевого слова else
- заменить цепочки геттеров на методы по закону Деметры
- инкапсулировать примитивные поля и коллекции в отдельные классы
- разбить крупный сервис на классы объёмом до 50 строк

## Примеры запросов агенту
- Проверь класс OrderProcessor.cs на соблюдение девяти правил Object Calisthenics.
- Отрефактори метод расчёта скидки без else и с одним уровнем вложенности.
- Оберни примитивные поля сущности User в отдельные объекты-значения.

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

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

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