7.1. Rotinas: por que criar e coesão
Rotinas reduzem complexidade; a melhor faz uma coisa só (coesão funcional).
Resumo
- Motivos: reduzir complexidade, abstração intermediária legível, evitar duplicação, esconder sequências.
- Até rotinas de 2 ou 3 linhas valem a pena se melhoram a leitura ou isolam algo que pode mudar.
- Coesão funcional (ideal): faz uma única operação. Aceitáveis: sequencial, comunicacional, temporal.
- Ruins: procedural (ordem da tela), lógica (flag escolhe o que fazer), coincidental (sem relação).
- Rotina boa é aquela que dá para nomear com clareza; dificuldade de nomear é sinal de baixa coesão.
Perguntas-chave
responda de cabeça, depois abraQual o motivo mais importante para criar uma rotina?
Reduzir complexidade: esconder detalhes para não precisar pensar neles ao ler o código que a chama.
O que é coesão temporal?
Rotina que agrupa operações executadas ao mesmo tempo, como inicializar() ou finalizar(). É aceitável se só chamar outras rotinas.
O que é coesão lógica?
Rotina que faz coisas diferentes conforme um flag de controle passado como parâmetro; costuma ser melhor dividi-la.
Exercícios de fixação
0/5 respondidas1.
processar(tipo) faz um relatório se tipo == 1, envia e-mail se tipo == 2 e apaga registros se tipo == 3. Que coesão é essa?2.
calcularSeno(angulo) faz só isso. Que coesão é essa?3.
Vale criar uma rotina de uma linha
ehPar(n) que retorna n % 2 == 0?4.
inicializarSistema() abre o log, lê a configuração e zera contadores, chamando uma rotina para cada coisa. Que coesão é essa e ela é aceitável?5.
Uma rotina é difícil de nomear porque faz várias coisas sem relação. Isso indica: