Era do Codificação com IA, bons hábitos de programação ainda são importantes


Recentemente, ao fazer um benchmark de Agent, percebi que não dá para avaliar a complexidade de uma tarefa de programação para IA apenas do ponto de vista do desenvolvedor.
Por exemplo, uma tarefa de refatoração: dividir um arquivo grande de várias milhares de linhas em mais de dez pequenos módulos por funcionalidade.
Essa tarefa para um desenvolvedor não é difícil, o trabalho principal é mover código, organizar imports, compilar e validar, até um iniciante consegue fazer.
Por isso, pensei em usar uma tarefa simples para fazer um benchmark, mas o resultado foi inesperado.
Claude Code achou que essa tarefa era grande, tentou dividir uma parte, abriu um PR e escreveu um Future work planejando fazer passo a passo.
Meu próprio Agent é “forçar a barra”, avançando mais na direção de uma divisão completa, mas o custo também ficou claro: o consumo de tokens é dezenas de vezes maior que o do Claude, e grande parte do tempo foi gasta em reler arquivos, corrigir erros de compilação, reler novamente, corrigir mais erros.
Isso me fez perceber que, tarefas que parecem simples para as pessoas, nem sempre são simples para o Agent.
Para o humano, essa refatoração muitas vezes é só “mover esse trecho para lá”. Mas para o Agent, ele precisa primeiro ler o arquivo grande em partes, lembrar quais funções e testes estão relacionados, depois gerar uma série de modificações entre arquivos, e por fim ir corrigindo os erros de compilação aos poucos.
Parece uma tarefa mecânica, mas na prática vira uma tarefa de alto custo de tokens e gerenciamento de estado.
Recentemente, vi alguém dizer que, na era do AI Coding, princípios de programação como divisão em módulos não são tão importantes, já que as pessoas também não olham o código.
Agora, acho que não concordo muito. Ter limites claros de módulo, tamanho adequado de arquivo, dependências simples, não só facilita a leitura humana, mas também ajuda a reduzir a complexidade da tarefa para o Agent.
Por outro lado, os ferramentas de leitura e edição de arquivos do Agent atualmente não são tão boas para esse tipo de refatoração.
Para editar arquivos, o Agent geralmente faz substituições de texto. Por exemplo, Claude Code costuma usar o padrão old_string / new_string: primeiro fornece um trecho de texto antigo, depois substitui pelo novo.
Codex costuma usar apply_patch: gera um patch semelhante ao git diff, que expressa a substituição do conteúdo antigo pelo novo.
Ambos funcionam bem para mudanças pequenas, mas se precisar deletar uma grande porção de código antigo ou mover várias funções para outro arquivo, o modelo geralmente precisa primeiro ler o conteúdo original no contexto, depois gerar uma grande substituição ou diff.
Por isso, depois, dei uma dica ao Agent: usar scripts, sed, perl ou ferramentas similares para dividir grosseiramente o arquivo grande, deletar o conteúdo antigo e escrever no novo arquivo, depois ir ajustando aos poucos.
Assim, a taxa de sucesso aumentou bastante.
Por padrão, o Agent não faz assim, porque o sistema de prompts geralmente exige que ele use as ferramentas internas para modificar arquivos, e não comandos de linha de comando.
Pensando um pouco mais adiante, talvez o Agent precise de ferramentas de edição mais avançadas.
Não só um “substituir texto”, mas construir uma estrutura de código usando parser, LSP ou compilador, para que ele possa fazer refatorações como mover funções, deletar blocos impl, organizar imports, como um IDE.
Não sei se alguém já tentou algo assim.
No geral, mesmo na era do AI Coding, bons hábitos de programação ainda têm valor.
Tentar, desde cedo, com engenharia de harness, transformar bons hábitos em modo de trabalho padrão do Agent, é muito mais barato do que fazer refatorações depois.
Ver original
Esta página pode conter conteúdo de terceiros, que é fornecido apenas para fins informativos (não para representações/garantias) e não deve ser considerada como um endosso de suas opiniões pela Gate nem como aconselhamento financeiro ou profissional. Consulte a Isenção de responsabilidade para obter detalhes.
  • Recompensa
  • Comentário
  • Repostar
  • Compartilhar
Comentário
Adicionar um comentário
Adicionar um comentário
Sem comentários
  • Marcar