# Padrões de código

## Linguagem e ambiente
- **C#** com compatibilidade ao perfil usado pelo Unity (ex.: .NET Standard 2.1 / Unity 2022+).  
- **Unity** como runtime; evitar acoplamento desnecessário da lógica de domínio ao engine.

## Organização
- Um tipo público por arquivo; nome do arquivo igual ao nome do tipo.  
- Namespaces alinhados à estrutura de pastas (ex.: `EventsAppQuest.Domain`, `EventsAppQuest.Domain.Models`).  
- Pastas: PascalCase para pastas de código; Docs em maiúsculas conforme convenção do projeto.

## Nomenclatura
- **Classes, interfaces, enums**: PascalCase.  
- **Métodos e propriedades públicas**: PascalCase.  
- **Campos privados**: _camelCase ou camelCase.  
- **Parâmetros e variáveis locais**: camelCase.  
- **Constantes**: PascalCase ou UPPER_SNAKE_CASE quando for constante global.

## Domínio
- Modelos de domínio: propriedades com comentários curtos; sem lógica de infraestrutura.  
- Enums: valores explícitos quando relevante para persistência/API.  
- Interfaces de serviços no Domain ou Application; implementações na Infrastructure.

## Comentários
- Comentários curtos em modelos e enums.  
- XML summary em tipos e métodos públicos quando o nome não for autoexplicativo.  
- Evitar comentários óbvios; priorizar código legível.

## Dependências
- Domain não referencia Unity nem outras camadas.  
- Application não referencia Presentation nem detalhes de UI.  
- Evitar dependências externas até haver necessidade clara (ex.: SDK Meta apenas quando for implementar MR).

## Testes (futuro)
- Testes unitários para Domain e Application.  
- Mocks na Infrastructure para desenvolvimento e testes.  
