Verdent Docs
Guias por tarefa

Melhorando e refatorando código

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.

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.


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

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.

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.

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

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.


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.

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.


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.

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

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.

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.

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).

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


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

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.

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.

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."

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.

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.

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.

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.

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.


Veja também