Ganhos:
- Capacidade de escrever funções, classes e módulos para IA com definições claras de entrada-saída e restrições
- Capacidade de usar a IA como parceira de programação em pares e progredir passo a passo, em pequenos pedaços verificáveis
- Capacidade de detectar erros lógicos e extremos compilando o código gerado pela IA e executando-o com pequenos exemplos
A programação em pares ocorre quando dois desenvolvedores trabalham no mesmo problema, com um escrevendo e o outro revisando. Codificar com IA é a versão digital dessa mesma relação: você define a direção, as restrições e os critérios de aceitação; AI produz rascunhos rápidos; Você verifica cada etapa compilando-a e testando-a. A maior armadilha aqui é dizer à IA “escreva-me este aplicativo do início ao fim” e aceitar cegamente um bloco de 200 linhas. Uma boa programação em pares ocorre em pequenos passos: cada passo deve ser compreensível, testável e reversível.
Nesta unidade você aprenderá como imprimir funções, classes e módulos com um contrato claro de entrada-saída; Como guiar a IA passo a passo; e veremos como capturar erros de lógica e casos extremos executando o código que ele produz com pequenos exemplos. O objetivo não é a velocidade, mas a velocidade verificada.
Conceitos: Contrato de entrada-saída: Uma definição clara de qual entrada uma função recebe e qual saída e comportamento de erro ela promete. Caso extremo: entrada que não é comum, mas pode realmente ocorrer (vazia, zero, negativa, muito grande, nula). Desenvolvimento incremental: Proceder com peças pequenas e funcionais e validar cada etapa.
Imprimindo código com contrato líquido
A base do código de qualidade é definir exatamente “o que você deseja” antes de iniciar o trabalho. Ao escrever uma função para IA, forneça cinco coisas: idioma e versão, tipos e significados de entrada, saída, condições de erro e restrições (desempenho, proibição de biblioteca externa, estilo). Isso evita que a IA adivinhe.
- Escreva o contrato. Entrada, saída, erro, restrição.
- Peça uma unidade pequena. Uma função com uma única responsabilidade; Não é um módulo enorme.
- Solicite um bloco de teste. Adicione alguns exemplos de execuções/testes ao lado do código.
- Compile e execute. Experimente com casos extremos, verifique a saída visualmente.
- Vá para a próxima etapa. Assim que uma peça for confirmada, desenvolva-a.
Prompt de função contratada: "Escreva uma função para TypeScript 5. Objetivo: calcular a quantidade total de itens em um carrinho de compras. Entrada: {preço: número, quantidade: número }[] matriz. Saída: número (total). Regras: lançar erro se a quantidade ou preço for negativo; retornar 0 para matriz vazia; arredondar o valor para 2 casas decimais para erro decimal. Não usar biblioteca externa. Adicione 5 casos de teste abaixo da função (normal, vazio, quantidade negativa, preço decimal, item único)."
Guiando a IA como um par
Um bom progresso na programação em pares é um diálogo e não um grande pedido. Primeiro, solicite o esqueleto e execute-o; em seguida, adicione um estado de borda; então conserte um bug. Essa abordagem mantém o código compreensível e coloca você no controle de cada etapa.
Prompt de progresso incremental: "Escreveremos um leitor que lê um arquivo CSV e converte as linhas em um objeto. Vamos PASSO A PASSO, passando para a próxima etapa sem que eu confirme cada etapa. Etapa 1: basta escrever o esqueleto que divide o arquivo em linhas e separa a linha do cabeçalho. Não adicione conversão de tipo ou tratamento de erros ainda. Seja breve, explique."
Explique e justifique o prompt do código: "Explique a função que você acabou de escrever, não linha por linha, mas decisão por decisão: qual decisão de design você tomou e por quê, qual caso extremo você tratou e como, quais casos você excluiu deliberadamente? Liste 3 suposições no código que não devo perder. "
Dica: não aceite o código gerado pela IA sem entendê-lo. “Explique isso para mim, que suposições você fez?” A pergunta revela erros ocultos e permite defender esse código, já que o código permanece de sua responsabilidade. Colocar em produção um código que você não entende é como enviar um contrato sem assiná-lo.
Alerta Fraco/Prompt Forte
FRACO:"Escreva uma função de classificação."(Resultado: qual linguagem, o que está sendo classificado, é estável, qual é a restrição de desempenho, código que é vago e provavelmente não atende ao requisito.)FORTE:"Para Java 17, escreva um método que classifica um objeto List<Employee> primeiro por departamento (em ordem alfabética), depois por salário (decrescente). NÃO SUBSTITUA a lista original, retorne a nova lista. Deixe o departamento nulo vir por último. Explique a complexidade do método em a linha de comentário. especifique adicionar um bloco de teste principal com 4 amostras."
Alerta poderoso; Inclui critério de classificação (dois níveis), regra de efeito colateral (substituindo o original), comportamento nulo e expectativa de teste. Sem estes detalhes, a IA produz uma solução plausível mas incorreta; por exemplo, pode corromper a lista original e isso levará a um erro silencioso em outro lugar.
Validação com casos extremos e pequenas amostras
O código que funciona no cenário feliz não é o código correto. Force conscientemente cada função produzida:
Tipo de caso extremo
entrada de amostra
comportamento esperado
entrada em branco
Matriz/string vazia
Não é um erro, resultado lógico vazio
Zero/negativo
0, -1
Comportamento definido e correto
ótimo valor
Milhões de registros
Controle de estouro/desempenho
nulo/indefinido
faltando espaço
Erro controlado ou padrão
Duplicado/incomum
ordem repetitiva e inversa
resultado correto
Mini-casos
Caso 1 — Erro de arredondamento silencioso. AI escreve uma função que coleta dinheiro com tipos decimais (float); 0,1 + 0,2 dá 0,30000000000000004. O erro é resolvido quando o engenheiro adiciona a regra “Arredonde para 2 dígitos e use centavos inteiros”. Uma regra de 3 linhas evita milhares de centavos de variação na reconciliação mensal.
Caso 2 — Armadilha de efeito colateral. A IA escreve um método que “classifica” uma lista, mas modifica a lista original no local. O comportamento inesperado ocorre porque outro módulo usa a mesma lista. Se a restrição "alterar original" estivesse no prompt, o erro nunca ocorreria; fica preso na revisão do código e evita 2 horas de depuração.
Caso 3 — Ganhos passo a passo. Um desenvolvedor imprime um módulo de importação de 150 linhas de uma só vez; Quando ele encontra um erro, ele não consegue descobrir de onde ele veio. Outro desenvolvedor divide o mesmo trabalho em 5 pequenos passos, testa cada passo em 2 minutos e detecta o erro imediatamente no 3º passo.
Erros comuns
- Imprimindo grandes blocos em uma única solicitação. Nasce um código arriscado, difícil de entender e depurar.
- Pedir um código sem dar um contrato. Se o erro de entrada-saída for ambíguo, a IA adivinhará e estará errada.
- Apenas testando o cenário feliz. Se a entrada vazia, nula, negativa e grande não for tentada, o erro será deixado para a produção.
- Aceitar sem entender. O código que você não divulga é uma dívida que você não pode defender.
- Ignorando tipos sensíveis como efeitos colaterais e dinheiro/data. Dinheiro flutuante com história atemporal é uma fonte clássica de erro.
Em resumo
Escrever código com IA é uma programação disciplinada em pares: contrato claro, pequenas etapas, construção e teste em cada etapa. Fornecer o quarteto entrada-saída-erro-restrição desde o início determina a qualidade do código. Explicar o código que ele produz e forçá-lo com casos extremos traz à tona os erros ocultos no cenário feliz. A fonte da velocidade não é a aceitação cega; é um rascunho rápido e uma verificação rápida.
Tarefa de aplicativo
Escolha uma função pequena, mas real (por exemplo, total do carrinho, diferença de data, análise de texto). Imprimir usando o prompt da função contratada; Adicione pelo menos 5 cenários de teste próximos a ele. Execute o código e tente 5 casos extremos conscientemente, usando a tabela como guia. Encontre um bug em pelo menos um caso extremo (se não, projete uma nova entrada para forçar a função), corrija-o com IA e verifique testando novamente se a correção funcionou.
lista de verificação
- [] Escrevi um contrato que inclui entrada, saída, erros e restrições.
- [] Gerei o código em pequenos passos em vez de um grande bloco.
- [] Adicionei um bloco de execução de teste/amostra próximo ao código.
- [] Eu testei conscientemente pelo menos 5 casos extremos.
- [] Expliquei o código para a IA e revisei suas suposições.
- [] Corrigi o erro encontrado e confirmei a correção testando novamente.