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 duplicationThis authentication logic is scattered across multiple files. Consolidate it into a single moduleImprove error handling in the API layer to be more consistent and informativeVerdent 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á:
- Analisar o código e identificar todos os arquivos afetados
- Apresentar um plano de refatoração detalhado antes de fazer alterações
- Fazer perguntas de esclarecimento sobre preferências de implementação
- Mostrar exatamente o que será alterado e em que ordem
- Permitir que você revise e refine a abordagem
Exemplo com Plan Mode:
In Plan Mode: Refactor authentication logic to use a centralized authentication utilityO 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 utilityIsso 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:
- Fase de descoberta: Verdent (usando o Explorer) encontra todos os arquivos que precisam de alterações
- Análise de dependências: identifica as dependências entre arquivos para determinar a ordem de atualização
- Criação do plano: mostra todos os arquivos a serem modificados e a sequência de alterações
- Atualizações sequenciais: modifica os arquivos na ordem de dependência (por exemplo, tipos antes dos componentes que os usam)
- Gerenciamento de importações: atualiza automaticamente importações, exportações e referências entre arquivos
- 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 projectO 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 AuthServiceO 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 improvementsSuggest ways to improve code quality in the UserService moduleAre there any performance optimizations we could make here?Analyze the PaymentController for maintainability issuesVerdent 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 complexityVerdent 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.0Verdent 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:
- Aprove a Fase 1 no Plan Mode
- Mude para o Agent Mode e execute
- Teste minuciosamente para verificar se a Fase 1 funciona
- Volte ao Plan Mode para a Fase 2
- 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 improvementsCan 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-rendersO 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 handlerO 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:
-
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
-
Use controle de versão — Faça commit antes de refatorar para poder reverter se surgirem problemas
-
Refatore de forma incremental — Divida grandes refatorações em etapas menores, testando após cada alteração
-
Revise as alterações com atenção — Examine o diff para entender o que mudou e por quê
-
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 casesO 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 supportIsso 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.