Ir para o conteúdo
Diagramas como código com Mermaid
Guia técnico prático para modelar fluxos, classes e sequências de forma versionável usando Mermaid, inspirado no tema diagramas-como-codigo-com-mermaid.md
Conceitos-chave: por que diagramas como código e o papel do Mermaid
Neste ponto eu apresento o conceito central: diagramas são mantidos como código para facilitar versionamento, revisão
e evolução colaborativa. Mermaid entra como uma linguagem de texto simples que permite descrever diagramas com sintaxe
legível e executável por visualizadores modernos. A prática evita diagrama desatualizado em documentos estáticos e
reduz o atrito entre times de desenvolvimento, operações e documentação.
- Versionamento claro: cada diagrama fica sob controle de versões junto com o código da aplicação.
- Revisão orientada a texto: mudanças ficam evidentes em diff, facilitando revisões técnicas.
- Portabilidade: diagramas podem ser reutilizados entre repositórios com pouca fricção.
- Rápida iteração: alterações são rápidas, sem depender de ferramentas proprietárias ou de plugins complexos.
Nesta abordagem, a escolha por Mermaid se deve à simplicidade da sintaxe, à integração com Markdown
e à capacidade de renderizar diretamente em ambientes de documentação, wikis e static sites sem dependências pesadas.
Sintaxe e tipos de diagramas comuns em Mermaid
Mermaid oferece várias formas de representar diferentes domínios. Abaixo destaco as mais usadas em projetos de software:
- Flowchart (graph TD/ LR/ RL): diagrama de fluxo para processos, decisões e caminhos.
- Sequence Diagram (sequenceDiagram): interação entre componentes ao longo do tempo, útil para comunicação entre serviços.
- Class Diagram (classDiagram): visão estática de classes e relacionamentos de um domínio orientado a objetos.
- State Diagram (stateDiagram-v2): máquina de estados para módulos com estados e transições.
Exemplos snippet sintéticos ajudam a entender a leitura rápida da linguagem.
graph TD
A[Início] --> B{Condição}
B -- Sim --> C[Etapa 1]
B -- Não --> D[Etapa 2]
C --> E[Fim]
D --> E
Estruturas avançadas: modularização com subgraph e práticas de organização
Em diagramas maiores, a clareza depende da organização. Mermaid suporta subgraphs para delimitar módulos
dentro de um diagrama maior, mantendo o conteúdo legível e reutilizável. A prática recomendada é dividir o diagrama
por domínio (ex.: autenticação, processamento, persistência) e conectá-los por pontos de integração.
- Use subgraphs para isolar componentes conceituais.
- Declare direções de fluxo para evitar ambiguidade na leitura (TD, LR, etc.).
- Comente trechos complexos com notas entre %% para manter contexto sem poluir o diagrama.
- Evite diagramas excessivamente longos: quebre em diagramas menores quando possível.
Abaixo está um exemplo ilustrativo de diagrama flowchart com modularização por meio de subgraphs.
graph TD
subgraph Módulo Autenticação
UA[Usuário] --> UA2[Formulário de login]
UA2 --> AOK{Validação}
AOK -->|OK| AC[Token Emitido]
AOK -->|Falha| AF[Erro]
end
subgraph Módulo Processamento
AC --> P1[Valida Token]
P1 --> P2[Executa Serviço]
P2 --> P3[Retorna Resultado]
end
UA -->|Loga com sucesso| P3
Boas práticas para manutenção, nomenclatura e leitura de diagramas
Manter diagramas com Mermaid exige rigor simples. Abaixo estão diretrizes que eu sigo para manter a qualidade ao longo do tempo.
- Nomeie arquivos e componentes de forma descritiva: diagramas-auth.md, diagramas-processamento.md, etc.
- Inclua um cabeçalho breve no próprio Mermaid para identificar o diagrama, versão e finalidade.
- Prefira diagramação modular com subgraphs para facilitar reutilizações e atualizações parciais.
- Documente suposições relevantes como notas entre %% para não perder o contexto durante as alterações.
- Verifique renderização em ambientes diferentes (edições de Markdown, extensões VSCode, geradores estáticos) para consistência visual.
Exemplo consolidado: diagrama de fluxo com modularização
Este trecho resume uma prática comum: combinar módulos com subgraphs e caminhos que conectam as partes de um processo.
graph TD
subgraph Módulo Autenticação
A1[Usuário] --> A2[Validação de credenciais]
A2 --> A3{Credenciais válidas?}
A3 -- Sim --> A4[Gerar token]
A3 -- Não --> A5[Feedback de erro]
end
subgraph Módulo Aplicação
B1[Recebe token] --> B2[Verifica autorização]
B2 --> B3[Executa operação]
B3 --> B4[Retorna resultado]
end
A4 -->|Token válido| B1
A5 --> B1
Observação: mantenha cada subgraph com responsabilidades bem definidas para facilitar a leitura e a evolução do diagrama ao longo das versões do código.
Explore mais posts no blog para aprofundar temas técnicos relacionados a engenharia de software, documentação viva e padrões de projeto.
Sou Apaixonado pela programação e estou trilhando o caminho de ter cada diz mais conhecimento e trazer toda minha experiência vinda do Design para a programação resultando em layouts incríveis e idéias inovadoras! Conecte-se Comigo!