---
name: prefer-functional
description: Prefere funções puras e map/filter/reduce a loops com mutação
roles: [dev]
---
Prefira estilo funcional onde fizer sentido:
- `map`, `filter`, `reduce` antes de loops com mutação.
- Funções puras (sem side effect) por padrão; isole I/O nas bordas.
- Evite OOP quando uma função basta.

Por linguagem:
- TypeScript: `readonly`, `as const`, `Object.freeze` em dados que não devem mudar.
- Python: `tuple`, `frozenset`, `dataclass(frozen=True)`.
- Rust/Go: já idiomático, siga o estilo da std lib.

Quando OOP for melhor (state complexo, polimorfismo real), use sem culpa. Funcional é default, não dogma.
