Módulo 12 - Funções, as máquinas do algoritmo

Reusar sem copiar e colar: escreva uma vez, use sempre

8 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 02/07/2026

O que você vai aprender

  • Reconhecer o copiar e colar como fábrica de bugs futuros.
  • Aplicar a regra “não se repita”: repetiu duas vezes, vire função.
  • Consertar uma regra em UM lugar e propagar para todos os usos.
  • Enxergar as funções prontas das linguagens como reuso de fábrica.

A armadilha do copiar e colar

Imagine a cena, que acontece todo dia em algum computador do mundo: o programa da lanchonete calcula o preço com desconto em três telas diferentes, e o programador resolveu no método rápido, copiando as mesmas quatro linhas para os três lugares. Funcionou. Meses depois, o dono muda o desconto de 10 para 15 por cento. O programador atualiza duas cópias e esquece a terceira. Resultado: a tela do caixa cobra um preço, a do delivery cobra outro, e o cliente percebe antes do dono. Nenhuma das cópias tinha erro; o erro foi existirem cópias.

Esse tipo de defeito é traiçoeiro porque nasce invisível. No dia da cópia, o programa está perfeito e os testes passam. A bomba só arma quando a regra muda, e regra de negócio muda sempre: desconto, taxa de entrega, faixa do imposto, valor do teto. Cada cópia é um lugar a mais para lembrar, e memória humana não é ferramenta de engenharia. A defesa tem nome curto e fama mundial: “não se repita”, o princípio DRY. Se a mesma lógica aparece duas vezes, ela está pedindo para virar função.

função preco_com_desconto(preco)
  retorne preco - preco * 15 / 100
fim função

// tela do caixa:      escreva(preco_com_desconto(40))
// tela do delivery:   escreva(preco_com_desconto(52))
// tela do balcão:     escreva(preco_com_desconto(25))
// o desconto mudou? Conserta-se UMA linha, e as três telas obedecem.

A regra mora num lugar só: mudou o desconto, mudou para todo mundo.

Treinando o faro para repetição

O faro anti-repetição se treina, e há nuances que separam o reuso maduro do reflexo apressado. Nem toda semelhança é repetição de verdade: dois trechos podem parecer iguais hoje e ter motivos diferentes para mudar amanhã, e aí uni-los cria um nó. O sinal confiável é a REGRA compartilhada: se os trechos existem pelo mesmo motivo (o mesmo desconto, a mesma validação de idade, o mesmo cálculo de média), eles devem morar na mesma função. Programadores experientes falam da regra das três ocorrências: na primeira escreva, na segunda desconfie, na terceira extraia sem dó.

🎮 Jogo da aula

Caça-mitos do reuso

Verdadeiro ou falso? Julgue cada afirmação sobre copiar, colar e reusar.

E o reuso não para no seu arquivo. A função preco_com_desconto que você escreveu para a lanchonete serve, sem mudar uma vírgula, no programa da papelaria. Máquinas bem feitas, com responsabilidade única e nome honesto, viajam entre projetos, e é exatamente assim que a profissão funciona: bibliotecas inteiras de funções compartilhadas entre milhões de programadores. Quando você chegar ao Python, na trilha seguinte do portal, vai encontrar prateleiras de máquinas prontas para matemática, texto, datas e muito mais.

A recompensa: seu código virou caixa de ferramentas

Feche o módulo olhando o caminho andado. Na aula 1, a função era uma máquina com nome. Na aula 2, ela ganhou boca de entrada: os parâmetros. Na aula 3, ganhou a saída oficial: o retorno. Na aula 4, você aprendeu a projetar a fábrica inteira, quebrando problemas em máquinas de responsabilidade única. Agora, o arremate: cada função bem feita entra na sua caixa de ferramentas pessoal e nunca mais precisa ser escrita de novo. Os módulos que faltam colhem esse fruto: o teste de mesa do módulo 13 testa função por função, e o projeto final do módulo 16 é, no fundo, uma coleção de máquinas suas trabalhando juntas.

Escreva uma vez, teste uma vez, use para sempre: essa é a economia das funções. De agora até o fim do curso, todo algoritmo com mais de vinte linhas que você escrever deve nascer decomposto em máquinas.

Teste rápido

O mesmo cálculo de frete aparece copiado em 4 pontos do programa, e a transportadora mudou a regra. Qual é o caminho mais seguro?

Perguntas frequentes

Copiar e colar é sempre errado?
Como técnica de digitação, não: copiar um trecho para dentro da função que você está extraindo é normal. O problema é o copiar e colar como arquitetura, deixando a mesma regra viva em vários endereços. A pergunta certa é: se essa regra mudar, quantos lugares terei que lembrar?
O que significa a sigla DRY?
Don't Repeat Yourself, “não se repita” em inglês. O princípio ficou famoso no livro The Pragmatic Programmer, de 1999, e diz que cada conhecimento do sistema deve ter uma representação única. Na prática do curso: regra repetida vira função.
Como encontro as funções prontas de uma linguagem?
Pela documentação oficial, que lista as funções embutidas com exemplos: o Python, por exemplo, documenta todas as suas funções nativas em português. Antes de escrever uma máquina, vale dois minutos de busca: arredondar, ordenar, medir tamanho e dezenas de tarefas comuns já vêm prontas.
Reusar função dos outros não é preguiça?
É engenharia. A função pronta de arredondar números já foi testada por milhões de execuções; a sua versão caseira começaria do zero. O tempo que você economiza vai para a parte que só você pode fazer: a lógica do SEU problema. Profissional bom reusa o comum e inventa apenas o específico.
Se eu mudar a função reutilizada, não quebro todos os lugares que a chamam?
Esse é o outro lado da moeda, e é bom conhecê-lo: um conserto na função se propaga para todos os usos, mas um estrago também. Por isso o hábito de testar a função isolada após qualquer mudança, com os valores conhecidos da aula 4. Um lugar para consertar é também um lugar só para vigiar.
Quando devo criar minha própria função em vez de procurar uma pronta?
Quando a lógica é do seu problema, não do mundo: a regra de desconto da SUA lanchonete, a validação do SEU formulário. O universal (arredondar, ordenar, converter) quase sempre já existe pronto; o específico do seu negócio é seu trabalho. Essa divisão fica nítida com a prática.

Fontes

Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.