Programação (II) - Modularização
Continuando a série sobre programação, vamos falar sobre modularização. Como dividir adequadamente um sistema? Qual a unidade ideal? Como quebrar funções? Como saber se um módulo está realmente bom? Esse artigo vai tentar responder algumas dessas questões e dar argumentos para pensarmos em muitas outras.
Parte 8: Critério nº 04: Coesão
Enquanto o acoplamento é relacionado com dois ou mais módulos, a coesão é um critério de um só módulo.
Um módulo é dito coeso quando ele realiza apenas uma tarefa.
Uma das melhores maneiras de avaliar a coesão de um módulo é observar o nome dele. Vejamos um exemplo:
CalculaSomaEImprime: Como se pode ver, esse módulo realiza duas tarefas. Para melhorar a coesão, seria bom dividí-lo em dois, sendo um para calcular a soma e outro para imprimir o resultado. Com isso tornaríamos as duas operações independentes e reduziríamos a complexidade. Um módulo como esse é pouco reutilizável (fan-in baixo), já que só pode ser usado por outro módulo que precise da soma seguida da impressão. Já os módulos CalculaSoma e ImprimeValorSoma, que resultariam da quebra dele, seriam melhor aproveitados.
Um módulo é dito coeso quando ele realiza apenas uma tarefa.
Uma das melhores maneiras de avaliar a coesão de um módulo é observar o nome dele. Vejamos um exemplo:
CalculaSomaEImprime: Como se pode ver, esse módulo realiza duas tarefas. Para melhorar a coesão, seria bom dividí-lo em dois, sendo um para calcular a soma e outro para imprimir o resultado. Com isso tornaríamos as duas operações independentes e reduziríamos a complexidade. Um módulo como esse é pouco reutilizável (fan-in baixo), já que só pode ser usado por outro módulo que precise da soma seguida da impressão. Já os módulos CalculaSoma e ImprimeValorSoma, que resultariam da quebra dele, seriam melhor aproveitados.