Analisar lógica complexa usando o modo Ask do GitHub Copilot
Identificar condicionales complexas que podem e devem ser simplificadas nem sempre é fácil. Planejar como refatorar seu código pode ser ainda mais difícil.
Os desenvolvedores podem usar o modo Ask do GitHub Copilot para refatorar condicionais complexas e melhorar a qualidade do código.
O que é o modo Perguntar?
O modo Ask do GitHub Copilot é uma interface de chat conversacional. Você faz perguntas e o GitHub Copilot responde usando o contexto que você fornece. É como ter um colega experiente que pode ler seu código e dar conselhos. Por exemplo, você pode usar o modo Ask para explicar o que uma função faz, identificar possíveis problemas ou sugerir melhorias.
O modo De perguntar responde com explicações, insights ou exemplos de código que você pode usar para melhorar seu código. No modo Ask, o GitHub Copilot não faz nenhuma alteração em seus arquivos de código.
Analisar condicionalidades complexas usando o modo Ask
Você pode usar o modo Ask para identificar e analisar condicionalidades complexas em seu código. O GitHub Copilot pode ajudá-lo a entender a lógica condicional, identificar possíveis problemas e avaliar oportunidades de melhoria.
Estratégias para analisar condicionalidades complexas
Aqui estão algumas estratégias para usar o modo Ask para analisar condicionalidades complexas:
Explicar o código: peça ao GitHub Copilot para explicar o que o condicional complexo faz. Essa pergunta ajuda a garantir que você entenda a lógica atual antes de fazer alterações.
Identificar a complexidade: peça ao GitHub Copilot para identificar quais partes da condicional estão tornando-a complexa. Essa pergunta pode ajudá-lo a identificar áreas nas quais se concentrar.
Localizar casos de borda: peça ao GitHub Copilot para identificar quaisquer casos de borda ou possíveis bugs na lógica condicional. Essa pergunta pode ajudá-lo a garantir que seu código refatorado trate todos os cenários.
Sugerir refatoração: peça sugestões ao GitHub Copilot sobre como simplificar ou refatorar a lógica condicional. O GitHub Copilot pode sugerir o uso de cláusulas de proteção, extração de métodos ou outras técnicas para melhorar a clareza.
Peça exemplos: se você não tiver certeza de como implementar uma sugestão, peça exemplos de código ao GitHub Copilot. Essa pergunta pode ajudá-lo a entender como aplicar os conselhos em seu contexto específico.
Explorar riscos: pergunte ao GitHub Copilot sobre possíveis riscos ou efeitos colaterais da refatoração da lógica condicional. Essa pergunta pode ajudá-lo a evitar a introdução de novos bugs.
Iterar: use perguntas de acompanhamento para detalhar sugestões específicas ou áreas de preocupação. Uma abordagem iterativa pode ajudá-lo a refinar sua compreensão e planejar sua abordagem com mais eficiência.
Pergunta em prompt para condicionais complexas
As instruções que você usa para analisar condicionais complexas devem refletir seu código e suas metas específicas. No entanto, aqui estão algumas práticas recomendadas sugeridas a serem consideradas:
- Concentre-se em técnicas de análise específicas em vez de solicitações genéricas de ajuda.
- Referencie práticas estabelecidas, como princípios SOLID, padrões de design e convenções de codificação.
- Inclua métricas de qualidade, como complexidade ciclomática e cheiros de código.
- Enfatize o teste e a mitigação de risco, que são cruciais para refatoração segura.
- Promova as práticas recomendadas para código seguro, mantenedível e legível.
- Incentive o pensamento sistemático sobre os requisitos de negócios e a implementação técnica.
- Quando aplicável, resolva considerações de desempenho que são importantes para o código de produção.
Estabelecer o contexto de chat necessário
Ao usar o modo Ask, é importante fornecer contexto suficiente para o GitHub Copilot entender o código que você está analisando. Aqui estão algumas dicas:
- Use o botão Adicionar Contexto na interface de chat para incluir arquivos ou pastas relevantes da base de código.
- Inclua snippets de código relevantes ou exemplos que ilustram seus pontos.
- Descreva as metas específicas que você tem para a análise (por exemplo, simplificando a lógica, identificando bugs).
- Mencione quaisquer restrições ou requisitos importantes para a análise (por exemplo, considerações de desempenho, padrões de codificação).
Aqui estão alguns exemplos de texto de linguagem natural que você pode incluir em seu prompt ao analisar condicionalidades complexas:
Noções básicas e análises
- "Analise a lógica condicional selecionada e explique o que cada ramificação faz."
- "Qual é a complexidade ciclomática do bloco condicional selecionado e por quê?"
- "Examine as condições condicionais selecionadas e identifique as principais condições que estão sendo avaliadas e suas relações."
- "Quais regras ou requisitos de negócios a lógica condicional selecionada implementa?"
Avaliação de qualidade
- "Avalie o condicional selecionado para possíveis problemas de manutenção."
- "Há algum cheiro de código ou antipadrões na lógica condicional selecionada?"
- "Examine as condições condicionais selecionadas e identifique os casos de borda ou as condições de erro que podem não ser tratadas corretamente."
- "O condicional selecionado segue os princípios SOLID? Se não, como poderia ser melhorado?
Oportunidades de refatoração
- "Sugira técnicas de refatoração específicas para simplificar o condicional selecionado (cláusulas de proteção, polimorfismo, padrão de estratégia etc.)."
- "Como posso dividir o complexo condicional selecionado em funções menores e mais focadas?"
- "Quais padrões de design podem ajudar a eliminar ou reduzir a complexidade do condicional selecionado?"
- "Mostre-me como aplicar o princípio 'fail fast' à lógica condicional selecionada."
Teste e avaliação de risco
- "Quais casos de teste eu precisaria para garantir que a lógica condicional selecionada funcione corretamente após a refatoração?"
- "Quais são os riscos de refatorar o condicional selecionado e como posso atenuá-los?"
- "Como posso verificar se o código refatorado mantém o mesmo comportamento que o original?"
- "Examine suas abordagens sugeridas para refatorar o condicional selecionado. Quais são as implicações de desempenho associadas a cada uma das abordagens sugeridas?"
Aplicativo de práticas recomendadas
- "O condicional selecionado segue as convenções de codificação em C# da Microsoft? Quais melhorias são necessárias?"
- Como posso tornar a condicional selecionada mais legível e autoexplicativa?
- "Quais aprimoramentos de nomenclatura tornariam a lógica condicional selecionada mais clara?"
- "Como posso reduzir a carga cognitiva ao ler o condicional selecionado?"
Pergunta em fluxo de trabalho para condicionais complexas
O fluxo de trabalho a seguir demonstra como usar o modo Ask em um condicional complexo:
Abrir o código problemático
Navegue até o arquivo e a função que contém a lógica condicional complexa que você pretende refatorar. Por exemplo, suponha que você tenha um método
CalculateDiscount()que se expandiu ao longo do tempo com muitas condições aninhadas.Selecione o código relevante
Selecionando o bloco de código específico (as instruções aninhadas
if, por exemplo), você dá ao Copilot um foco claro. Copilot usa essa seleção como contexto para responder.Pedir uma explicação do código
Comece de forma simples. Por exemplo:
"Copilot, você pode explicar o que este
CalculateDiscountmétodo está fazendo?"No modo Ask, Copilot lê o código e produz uma explicação em inglês sem formatação. Esta etapa é útil para garantir que você (e o GitHub Copilot) entendam completamente a lógica atual antes de alterá-la. A explicação pode ser apresentada como:
"Esse método calcula um desconto para um pedido. Primeiro, verifica se o usuário é um membro premium; em caso afirmativo, ele define baseDiscount como 10%. Em seguida, ele verifica se um código de cupom é fornecido. Se existir um cupom, ele validará a data de validade do cupom, aplicando um desconto extra, se válido. Também tem casos especiais para vendas de feriados e pedidos em massa..."
Use a explicação para confirmar a intenção do código. A explicação pode até identificar onde a lógica é complicada.
Fazer perguntas pontuais sobre complexidade
Agora você pode se tornar analítico. Por exemplo:
- "Há verificações redundantes ou repetidas neste código?"
- "Quais partes dessa lógica estão tornando-a complexa?"
- Quais casos extremos esse código manipula?
Use as respostas do GitHub Copilot para identificar oportunidades de melhoria. Por exemplo:
"Dentro da seção de cupons, o elemento aninhado
ifadiciona complexidade. Além disso, há umifa cinco níveis de profundidade para vendas de feriados – considere simplificar isso."Use os comentários para continuar sua análise.
Solicitar sugestões de refatoração
Agora, a pergunta-chave:
"Como posso simplificar ou refatorar essa lógica condicional?"
Copilot, no modo Ask, pode responder com uma lista de sugestões. Por exemplo:
- Use cláusulas de proteção para lidar com os casos em que nenhum desconto se aplica (por exemplo, se o cupom for inválido, retorne antecipadamente).
- Extraia a validação do cupom e o cálculo do desconto para uma função própria para maior clareza.
- Combine as duas verificações de membro premium separadas em um só lugar para evitar a duplicação.
- Use um switch ou dicionário para os multiplicadores de venda de feriados em vez de if/else.
Ele pode até esboçar um breve pseudocódigo ou mostrar como uma parte do código ficaria depois de aplicar essas ideias.
Iterar com perguntas de acompanhamento
Você pode detalhar qualquer sugestão:
- Quais condições nesta função seriam boas cláusulas de proteção?
- "Você pode me mostrar como uma função extraída pode ser para o cálculo do cupom?"
- "Para quais cenários de desconto diferentes esse código conta?"
Por meio desse diálogo, o GitHub Copilot ajuda a formar um plano de refatoração. Ao final da exploração do modo Ask, você pode ter uma lista de alterações específicas a serem implementadas, como:
- Adicione um retorno antecipado para cupons inválidos.
- Mover o cálculo de desconto de feriado para uma função separada.
- Remova a verificação duplicada em
IsPremiumrealizando-a uma vez no início. - Use uma única condição combinada para pedidos em massa em vez de duas instruções
ifaninhadas.
Essa abordagem estruturada ajuda a garantir que qualquer refatoração mantenha a intenção original, melhorando a clareza e a manutenção do código.
Tratar sugestões do GitHub Copilot como diretrizes
Embora as sugestões do GitHub Copilot sejam muitas vezes boas, elas não são infalíveis. Trate-os como orientação, não verdade absoluta. Por exemplo, o GitHub Copilot pode sugerir uma alteração que alteraria ligeiramente o comportamento se ele interpretasse mal o código. Sempre verifique duas vezes as alterações de lógica críticas.
Como o modo Ask não modifica seu código, você é livre para explorar diferentes abordagens e avaliar sugestões sem nenhum risco.
Resumo
Usar o modo Ask do GitHub Copilot é uma maneira poderosa de analisar e planejar a refatoração de condicionais complexas. Ao se envolver de maneira conversacional, você pode obter insights sobre a lógica existente, identificar pontos de dor e receber sugestões personalizadas de simplificação. Essa abordagem ajuda a garantir que qualquer refatoração mantenha a intenção original, melhorando a clareza e a manutenção do código.