---
title: Melhorando e refatorando código
description: Práticas recomendadas para melhoria e refatoração de código com Verdent
---

Verdent for VS Code ajuda você a refatorar e melhorar código com segurança em vários arquivos, preservando a funcionalidade. Usando Plan Mode com o subagente Explorer, você pode identificar todos os arquivos afetados antes de fazer alterações, garantindo uma refatoração abrangente sem perder nenhuma ocorrência.

### O que você vai aprender

- Solicitar refatorações eficazes focadas em resultados, não em implementação
- Refatorar com segurança em vários arquivos com gerenciamento de dependências
- Solicitar melhorias de qualidade de código e sugestões de otimização
- Lidar com projetos de refatoração em larga escala com abordagens multifásicas
- Otimizar o desempenho por meio de melhorias algorítmicas e arquiteturais
- Preservar a funcionalidade do código durante operações de refatoração

### Pré-requisitos

Antes de refatorar com Verdent:

- Visual Studio Code com a extensão Verdent instalada
- Uma base de código ou espaço de trabalho de projeto aberto no VS Code
- Assinatura ativa do Verdent com créditos disponíveis
- Controle de versão (Git) recomendado para reversão segura, se necessário

---

## Solicitando refatorações eficazes

Descreva **o que você quer melhorar e por quê**, em vez de **como corrigir**. Deixe o Verdent analisar o código e propor a melhor abordagem com base nos padrões do seu projeto.

**Solicitações de refatoração eficazes:**

Foque no resultado que você deseja, não na implementação:

```
Refactor the UserController to improve readability and reduce duplication
```

```
This authentication logic is scattered across multiple files. Consolidate it into a single module
```

```
Improve error handling in the API layer to be more consistent and informative
```

Verdent analisa o código, identifica todos os arquivos afetados, examina os padrões e propõe estratégias específicas de refatoração alinhadas às convenções da sua base de código.

**Prática recomendada: use Plan Mode**

Inicie as solicitações de refatoração no Plan Mode. O Verdent irá:

1. Analisar o código e identificar todos os arquivos afetados
2. Apresentar um plano de refatoração detalhado antes de fazer alterações
3. Fazer perguntas de esclarecimento sobre preferências de implementação
4. Mostrar exatamente o que será alterado e em que ordem
5. Permitir que você revise e refine a abordagem

**Exemplo com Plan Mode:**

```
In Plan Mode: Refactor authentication logic to use a centralized authentication utility
```

O Verdent irá:
- Usar o Explorer para encontrar todos os locais de código de autenticação
- Identificar padrões e inconsistências
- Propor uma interface de autenticação unificada
- Mostrar quais arquivos serão modificados
- Explicar a sequência de refatoração

Você pode solicitar ao Verdent que salve o plano em um arquivo `plan.md` para revisão adicional e discussão em equipe antes da execução.

**Usando o Explorer para buscas abrangentes:**

Para refatorações complexas, peça explicitamente ao Verdent que use o agente Explorer para buscar minuciosamente:

```
Use the Explorer agent to find all places where we manually validate email addresses, then refactor them to use a centralized validation utility
```

Isso garante que o Verdent descubra todos os locais que precisam de atualização, evitando refatorações inconsistentes na base de código.

<Tip>
  Plan Mode é essencial para a refatoração. Ele evita surpresas mostrando exatamente o que será alterado antes da execução e permite que você refine a abordagem com base em considerações arquiteturais.
</Tip>

---

## Refatoração de vários arquivos

Verdent refatora em vários arquivos mantendo importações, dependências e referências entre arquivos. Ele identifica todos os arquivos afetados, atualiza-os na ordem correta e garante consistência em toda a base de código.

**Como funciona a refatoração de vários arquivos:**

1. **Fase de descoberta**: Verdent (usando o Explorer) encontra todos os arquivos que precisam de alterações
2. **Análise de dependências**: identifica as dependências entre arquivos para determinar a ordem de atualização
3. **Criação do plano**: mostra todos os arquivos a serem modificados e a sequência de alterações
4. **Atualizações sequenciais**: modifica os arquivos na ordem de dependência (por exemplo, tipos antes dos componentes que os usam)
5. **Gerenciamento de importações**: atualiza automaticamente importações, exportações e referências entre arquivos
6. **Verificação**: confere se as alterações estão consistentes em todos os arquivos

<Note>
A refatoração de vários arquivos preserva a funcionalidade por meio do rastreamento automatizado de dependências; Verdent atualiza todos os arquivos afetados de forma atômica.
</Note>

**Exemplo:**

```
Rename the User interface to UserProfile across the entire project
```

O Verdent irá:
- Encontrar todos os arquivos que importam ou usam `User`
- Identificar definições de tipo, implementações e usos
- Atualizar primeiro as definições de tipo, depois as implementações e, por fim, os usos
- Ajustar todas as instruções de importação
- Garantir consistência em toda a base de código

**Use Plan Mode para revisar o escopo:**

Antes de executar a refatoração de vários arquivos, revise o escopo completo no Plan Mode:

```
In Plan Mode: Extract the authentication logic from UserController into a separate AuthService
```

O Verdent mostrará:
- Quais arquivos serão criados (novo AuthService)
- Quais arquivos serão modificados (UserController e todos os importadores)
- Qual código será movido de UserController para AuthService
- Como as importações e dependências serão atualizadas

Isso evita aumentos acidentais de escopo e garante que você compreenda o impacto total antes de prosseguir.

---

## Solicitando melhorias de qualidade de código

Verdent não sugere melhorias proativamente sem ser solicitado. No entanto, você pode pedir revisões de qualidade de código e sugestões de melhoria a qualquer momento.

<Tabs>
  <Tab title="Revisões gerais">
    Solicite revisões amplas de qualidade de código:

    ```
    Review this code for potential improvements
    ```

    ```
    Suggest ways to improve code quality in the UserService module
    ```

    ```
    Are there any performance optimizations we could make here?
    ```

    ```
    Analyze the PaymentController for maintainability issues
    ```

    Verdent analisa o código e fornece sugestões específicas para:

    - **Legibilidade**: nomenclatura de variáveis, decomposição de funções, clareza de comentários
    - **Desempenho**: complexidade de algoritmos, operações redundantes, oportunidades de cache
    - **Manutenibilidade**: duplicação de código, acoplamento, separação de responsabilidades
    - **Práticas recomendadas**: padrões de projeto, tratamento de erros, cobertura de testes
    - **Segurança**: validação de entrada, verificações de autenticação, exposição de dados
  </Tab>

  <Tab title="Revisões direcionadas">
    Para feedback direcionado, referencie arquivos específicos:

    ```
    @services/UserService.js Review this module for dependency injection improvements
    ```

    ```
    @controllers/PaymentController.js Identify opportunities to reduce complexity
    ```

    Verdent examina o código especificado no contexto dos padrões do seu projeto e fornece recomendações acionáveis.
  </Tab>
</Tabs>

---

## Projetos de refatoração em larga escala

Para refatoração em larga escala, use Plan Mode com uma **abordagem multifásica** para obter os resultados mais confiáveis. Verdent divide a refatoração em etapas gerenciáveis, permitindo que você revise e aprove cada fase antes de prosseguir.

**Fluxo de trabalho de refatoração multifásica:**

#### Fase 1: análise inicial

Use Plan Mode com o agente Explorer para identificar todos os arquivos afetados e dependências:

```
In Plan Mode: Use Explorer to analyze our codebase and create a plan to replace our custom authentication with OAuth 2.0
```

Verdent realiza uma análise abrangente:
- Identifica todo o código relacionado à autenticação
- Mapeia dependências e pontos de integração
- Avalia a complexidade e as áreas de risco
- Propõe a divisão em fases

#### Fase 2: planejamento de fases

Verdent cria um plano multifásico para revisão:

**Exemplo de plano:**
- **Fase 1**: adicionar a biblioteca OAuth e configurar os endpoints
- **Fase 2**: atualizar o modelo de usuário e o esquema do banco de dados
- **Fase 3**: migrar a lógica de autenticação existente
- **Fase 4**: remover o código de autenticação obsoleto
- **Fase 5**: atualizar testes e documentação

Cada fase inclui:
- Arquivos a serem modificados
- Complexidade estimada
- Dependências de fases anteriores
- Avaliação de risco

#### Fase 3: execução fase a fase

Execute uma fase de cada vez, testando entre as fases:

1. Aprove a Fase 1 no Plan Mode
2. Mude para o Agent Mode e execute
3. Teste minuciosamente para verificar se a Fase 1 funciona
4. Volte ao Plan Mode para a Fase 2
5. Repita até concluir todas as fases

#### Fase 4: refinamento iterativo

Revise os resultados após cada fase. Se surgirem problemas:
- Ajuste o plano para as fases restantes
- Adicione fases corretivas, se necessário
- Refine a abordagem com base nas descobertas

Essa abordagem em fases garante segurança e permite correções de curso caso surjam problemas durante projetos de refatoração em larga escala.

<Note>
  A refatoração em larga escala deve sempre ser feita com controle de versão. Faça commit após cada fase para poder reverter se surgirem problemas, sem perder todo o progresso.
</Note>

---

## Otimização de desempenho

Verdent analisa o código em busca de gargalos de desempenho e sugere otimizações, incluindo melhorias na complexidade de algoritmos, estruturas de dados eficientes e redução do uso de recursos.

<Tabs>
  <Tab title="Otimização de algoritmos">
    Melhore a complexidade algorítmica:

    ```
    Analyze the performance of this data processing function and suggest improvements
    ```

    ```
    Can we improve the time complexity of this search algorithm?
    ```

    **O que o Verdent identifica:**

    - **Complexidade de algoritmos**: loops O(n²), iterações aninhadas, buscas ineficientes
    - **Computações redundantes**: cálculos repetidos, operações desnecessárias
    - **Problemas de memória**: vazamentos de memória, alocações excessivas, retenção de objetos grandes

    **Exemplo:**

    ```
    Optimize the searchProducts function that's currently O(n²)
    ```

    Verdent analisa a função, identifica a ineficiência (loops aninhados ou buscas lineares repetidas) e propõe melhorias específicas:

    - Substituir o loop aninhado por um hash map para busca O(n)
    - Usar busca binária após ordenação para complexidade O(log n)
    - Armazenar em cache os resultados calculados para evitar cálculos redundantes
    - Implementar memoization para operações custosas

    A resposta inclui:
    - **Complexidade atual**: explicação de por que o código atual é lento
    - **Solução proposta**: mudança específica de algoritmo ou estrutura de dados
    - **Ganho de desempenho**: melhoria estimada (por exemplo, O(n²) → O(n log n))
    - **Compensações**: uso de memória, complexidade de código, considerações de manutenibilidade
  </Tab>

  <Tab title="Otimização de componentes">
    Otimize componentes de UI e renderização:

    ```
    Optimize this component to reduce unnecessary re-renders
    ```

    **O que o Verdent identifica:**

    - **Desempenho de frontend**: re-renderizações desnecessárias, bundles grandes, operações bloqueantes
    - **Ciclo de vida de componentes**: dependências ineficientes de useEffect, ausência de memoization
    - **Gerenciamento de estado**: atualizações de estado redundantes, prop drilling

    Verdent analisa seu componente e sugere otimizações como React.memo, useMemo, useCallback ou divisão de componentes.
  </Tab>

  <Tab title="Otimização de API e banco de dados">
    Identifique e corrija gargalos de API e banco de dados:

    ```
    Identify performance bottlenecks in the API request handler
    ```

    **O que o Verdent identifica:**

    - **Desempenho de banco de dados**: consultas N+1, índices ausentes, joins ineficientes
    - **Desempenho de API**: endpoints lentos, busca ineficiente de dados, ausência de cache

    Verdent examina os padrões de consulta e sugere índices de banco de dados, estratégias de cache e técnicas de otimização de API.
  </Tab>
</Tabs>

<Tip>
  Para otimização de desempenho, forneça contexto sobre os tamanhos típicos de dados e as restrições de desempenho. Isso ajuda o Verdent a propor soluções adequadas à sua escala (por exemplo, 100 itens versus 1 milhão de itens).
</Tip>

<Tip>
Faça profiling antes de otimizar e meça o impacto no desempenho para garantir que as otimizações tragam melhorias significativas.
</Tip>

---

## Preservando a funcionalidade durante a refatoração

Verdent busca preservar a funcionalidade do código durante a refatoração, mantendo as mesmas entradas, saídas e comportamento, ao mesmo tempo em que melhora a implementação interna.

**Como o Verdent preserva a funcionalidade:**

- **Análise de entrada/saída**: identifica assinaturas de funções, contratos de API e comportamentos esperados
- **Consciência de testes**: considera os testes existentes como especificações comportamentais
- **Mudanças conservadoras**: faz alterações mínimas para atingir o objetivo da refatoração
- **Verificação**: pode gerar ou executar testes para verificar se a funcionalidade foi preservada

**Práticas recomendadas para refatoração segura:**

1. **Sempre teste o código refatorado** — Mesmo com a análise do Verdent, testes manuais ou automatizados verificam se a funcionalidade foi preservada, especialmente em refatorações complexas

2. **Use controle de versão** — Faça commit antes de refatorar para poder reverter se surgirem problemas

3. **Refatore de forma incremental** — Divida grandes refatorações em etapas menores, testando após cada alteração

4. **Revise as alterações com atenção** — Examine o diff para entender o que mudou e por quê

5. **Use Plan Mode para refatorações complexas** — Revise a abordagem antes da execução para detectar possíveis problemas

**Exemplo: solicitação de refatoração segura**

```
Refactor the calculateOrderTotal function to use a more maintainable structure, but ensure it produces identical results for all input cases
```

O Verdent irá:
- Analisar a implementação atual e os casos extremos
- Propor uma estrutura refatorada
- Explicar por que a versão refatorada é equivalente
- Sugerir casos de teste para verificar a equivalência

**Quando a funcionalidade pode mudar:**

Em alguns casos, a refatoração altera intencionalmente o comportamento (corrigindo bugs, melhorando a validação). Deixe isso explícito:

```
Refactor the email validation function to correctly handle international domains, which the current implementation doesn't support
```

Isso sinaliza que a mudança de comportamento é esperada e intencional.

---

## Práticas recomendadas

<Accordion title="Descreva o problema, não a solução">
  Deixe o Verdent analisar o código e propor a melhor abordagem de refatoração, em vez de prescrever alterações específicas.
</Accordion>

<Accordion title="Sempre use Plan Mode para refatorar">
  Revise o plano completo antes da execução. Isso evita surpresas e permite que você refine a abordagem com base em considerações arquiteturais.
</Accordion>

<Accordion title="Use o Explorer explicitamente para buscas abrangentes">
  Para uma refatoração minuciosa, peça ao Verdent que use o Explorer para encontrar todas as ocorrências: "Use o Explorer para encontrar todo o tratamento manual de erros e, em seguida, refatore para usar nosso utilitário de erros."
</Accordion>

<Accordion title="Divida grandes refatorações em fases">
  Abordagens multifásicas com testes entre as fases são mais seguras e gerenciáveis do que tentar fazer tudo de uma vez.
</Accordion>

<Accordion title="Teste entre as fases">
  Verifique se cada fase funciona antes de prosseguir para a próxima. Isso isola os problemas e evita que se acumulem.
</Accordion>

<Accordion title="Faça commits com frequência">
  Use controle de versão para criar pontos de verificação após cada fase ou alteração importante. Isso permite reverter com segurança sem perder todo o progresso.
</Accordion>

<Accordion title="Salve os planos para revisão da equipe">
  Para refatorações significativas, solicite ao Verdent que salve o plano em `plan.md` para discussão em equipe antes da execução.
</Accordion>

<Accordion title="Forneça contexto para otimização">
  Ao solicitar melhorias de desempenho, inclua informações sobre tamanhos de dados, restrições de desempenho e compensações aceitáveis.
</Accordion>

---

## Veja também

<CardGroup cols={2}>
  <Card title="Testes e depuração" icon="bug" href="/docs/verdent-for-vscode/task-based-guides/testing-debugging">
    Gere testes para verificar se o código refatorado funciona corretamente
  </Card>

  <Card title="Entendendo o código" icon="book" href="/docs/verdent-for-vscode/task-based-guides/understanding-code">
    Analise a estrutura do código antes de refatorar para entender o impacto
  </Card>
</CardGroup>
