Freecode
  • Claude
  • Gemini

Explicar código legado

  • 4.5 (2)
  • 4
  • 2
  • Mar 15, 2026

O mapa que você queria ter recebido no primeiro dia.

Free

Free. Account required.

Lab

Test how it works before buying.

Try it

Prompt

30 lines

Você está explicando este código para alguém competente que chegou ao time hoje
e não conhece o domínio.

```{{linguagem}}
{{codigo}}
```

Contexto que eu já tenho: {{contexto}}

Explique em três alturas, nesta ordem:

## 1. Altura do produto (5 frases)
O que este código faz para o usuário final? Se ele sumisse, o que quebraria?

## 2. Altura da estrutura
- Quais são as peças e como se chamam
- O caminho de execução principal, em passos numerados
- O que entra e o que sai

## 3. Altura da armadilha
- Trechos cuja intenção não é óbvia pelo nome
- Suposições implícitas (ordem, formato, estado global, efeito colateral)
- O que quebra se alguém mexer sem cuidado

## 4. Perguntas para o autor
Até 5 perguntas cuja resposta você não encontra lendo o código. Priorize as que mudam
como eu deveria alterá-lo.

Não invente história sobre o porquê de decisões. Se não dá para saber pelo código,
isso vira pergunta na seção 4.

What this prompt does

Produz uma leitura em três alturas do mesmo arquivo: o que ele faz no produto, como está organizado, e onde estão as armadilhas. Termina com as perguntas que você deveria fazer a quem escreveu.

Preview

Result

1. Altura do produto

Esta função prepara a lista de itens que vai virar cobrança. Ela aplica um desconto de 10% a itens marcados com t, opcionalmente descarta itens em um estado específico, e ordena do mais caro para o mais barato. Se sumisse, a fatura sairia sem desconto, com itens que deveriam ter sido excluídos, e em ordem arbitrária.

2. Altura da estrutura

Peças: uma função só, sem estado. items é uma lista de dicionários; flag é um interruptor booleano.

Caminho principal:

  1. Percorre cada item da entrada.
  2. Se flag é verdadeiro e o campo st vale exatamente 2, pula o item.
  3. Copia o item e sobrescreve v: multiplica por 0.9 se t for truthy, senão por 1.
  4. Ordena o resultado por v decrescente.

Entra: lista de dicts com pelo menos a chave v. Sai: lista nova, ordenada. A entrada não é modificada, {**i} cria cópia rasa.

3. Altura da armadilha

  • st == 2 é um número mágico. Não há nada no código que diga o que 2 significa. Provavelmente um enum de status que virou inteiro solto.
  • t é truthy, não is True. Um item com "t": 0 não ganha desconto, mas "t": "não" ganha, string não vazia é truthy. Se esse campo vem de JSON externo, é um bug esperando.
  • i["v"] sem .get. As outras chaves usam .get e toleram ausência; v explode com KeyError. A inconsistência sugere que v é obrigatório, mas isso não está validado.
  • Cópia rasa. Se um item tiver valor aninhado, ele é compartilhado entre entrada e saída. Alterar o resultado altera o original.
  • Ponto flutuante em dinheiro. * 0.9 sobre float acumula erro de arredondamento. Em faturamento, isso costuma virar divergência de centavos.
  • flag=False é o padrão. Quem chamar sem o argumento não filtra nada, o comportamento "seguro" aqui é o mais permissivo.

4. Perguntas para o autor

  1. O que é st == 2? Existe um enum em algum lugar, ou o 2 é literal em todo o código?
  2. t significa "tributado"? O desconto de 10% é regra de negócio permanente ou uma promoção que ficou?
  3. v está em centavos (int) ou em reais (float)? Se for float, o arredondamento já causou divergência?
  4. Quem chama com flag=True e quem chama sem? A escolha do padrão False foi deliberada?
  5. Alguém depende da ordenação por valor, ou ela é só apresentação?

How to use

  1. 1

    Copy the template

    Use the copy button in the block above. It is 30 lines of instruction.

  2. 2

    Fill in the variables

    Swap the 3 highlighted variables for your own content. Leaving them blank degrades the output.

  3. 3

    Pick one of the listed models

    Run it on one of the models listed on the side. A smaller model usually degrades the result.

  4. 4

    Paste and run

    Or use the lab, with your own key, and compare it against the preview.