Refatorizar código mantendo o comportamento

Melhore a legibilidade e a manutenção de um excerto de código sem alterar o que ele faz, com explicação de cada alteração. Pensado para ChatGPT, Claude e Microsoft Copilot. Inclui 4 variáveis personalizáveis e pode copiá-lo gratuitamente com um clique.

Intermédio · Código · Pendente de revisão editorial

Prompt

És um especialista em código limpo e refatorização segura em {{language}}.

Refatoriza o seguinte código com estes objetivos, por ordem de prioridade: {{goals}}.

```
{{code}}
```

Regras:
- O comportamento observável tem de ser idêntico (mesmas entradas → mesmas saídas e efeitos secundários).
- Não acrescentes novas dependências.
- Respeita o estilo do projeto: {{style}}.
- Se a intenção de alguma parte não for clara ou o código parecer ter um bug, assinala-o em vez de o alterar em silêncio.

Formato da resposta:
1. Problemas detetados (lista curta, com o motivo).
2. Código refatorizado completo.
3. Uma tabela «alteração → benefício → risco».
4. Testes unitários mínimos que comprovem que o comportamento não mudou.

Como utilizar

Refatorize excertos delimitados (uma função ou um módulo pequeno). Execute os seus testes antes e depois de aplicar as alterações.

Exemplo de utilização

Objetivos: reduzir o aninhamento, nomes mais claros e separar a lógica de validação.

Exemplo de resultado

Partindo de uma função típica que calcula totais de encomendas com blocos repetidos:

1. Problemas detetados

  • Nomes opacos (d, t, x): obrigam a ler tudo para perceber o que representam.
  • Lógica duplicada: o cálculo do IVA repete-se em dois ramos.
  • Número mágico 0.21 sem explicação.

2. Código refatorizado

from decimal import Decimal

VAT_RATE = Decimal("0.21")


def line_total(price: Decimal, quantity: int) -> Decimal:
    return price * quantity


def order_total(lines: list[tuple[Decimal, int]], apply_vat: bool = True) -> Decimal:
    subtotal = sum((line_total(p, q) for p, q in lines), Decimal("0"))
    return subtotal * (1 + VAT_RATE) if apply_vat else subtotal

Uma única expressão calcula o subtotal e o IVA é aplicado num só ponto.

3. Alteração → benefício → risco

AlteraçãoBenefícioRisco
Extrair line_totalTestável isoladamenteNenhum
Constante VAT_RATETaxa alterada num só sítioBaixo
Eliminar o ramo duplicadoMenos código para manterVerificar arredondamento

4. Teste mínimo

def test_order_total_keeps_behavior():
    lines = [(Decimal("10"), 2), (Decimal("5"), 1)]
    assert order_total(lines) == Decimal("30.25")
    assert order_total(lines, apply_vat=False) == Decimal("25")

Dados-chave

Categoria
Programação e desenvolvimento · Refatorização
Tipo de resultado
Código
Nível
Intermédio
Pensado para
ChatGPT, Claude e Microsoft Copilot
Verificado em
Pendente de verificação editorial
Variáveis
Linguagem, Objetivos, Código e Estilo / convenções
Idioma
Português
Preço
Gratuito, sem registo
Atualizado
07/11/2026

Perguntas frequentes

Como sei que a refatorização não estragou nada?

Execute os testes que já tem e os que o prompt gera nas duas versões. Se o código não tiver testes, acrescente-os e faça commit antes de aplicar a refatorização.

Posso colar um ficheiro inteiro?

Sim, mas os resultados são mais fiáveis com um módulo ou poucas funções de cada vez. Com ficheiros muito longos, a IA tende a saltar ou resumir partes do código.

Para que serve este prompt?

Melhore a legibilidade e a manutenção de um excerto de código sem alterar o que ele faz, com explicação de cada alteração.

Com que ferramentas de IA funciona?

Foi pensado para ChatGPT, Claude e Microsoft Copilot. Ainda não o verificámos nestas ferramentas, pelo que os resultados podem variar entre elas.

Como personalizo o prompt?

Clique em “Personalizar” e preencha as variáveis (Linguagem, Objetivos, Código e Estilo / convenções). O texto atualiza-se instantaneamente e pode depois copiá-lo com um clique. Os valores ficam guardados apenas no seu navegador.

Preciso de experiência para o utilizar?

É de nível intermédio: convém conhecer o tema para fornecer bom contexto e rever o resultado com sentido crítico.

Este prompt é gratuito?

Sim. Todos os prompts do HomeCasa Prompts são gratuitos, sem registo nem subscrição. Pode também utilizá-los em projetos profissionais.

Posso confiar no resultado da IA?

Trate-o como um rascunho de qualidade: verifique sempre os dados, os números e as afirmações importantes antes de publicar ou tomar decisões.

Prompts relacionados