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 6: Critério nº 02: Baixa complexidade / FAN-OUT
Cada módulo de um sistemas deve ter um nível de complexidade aceitável.
Imaginemos agora um módulo que, para poder executar suas funções, tem de invocar os serviços de uma centena de outros módulos. Controlar esse nível de complexidade é bastante difícil.
Para reduzir a complexidade de um módulo devemos quebrá-lo em módulos menores e um bom critério para observar quando isso é necessário é ver o número de subordinados que ele tem, ou seja, o seu FAN-OUT.
O fan-out é o número de procedures que um módulo precisa chamar para executar suas tarefas.
Desejamos manter o fan-out dos nossos módulos baixo, reduzindo assim a complexidade da sua lógica interna.
Uma boa metáfora para pensar num módulo com fan-out elevado é imaginar um chefe que tem de comandar pessoalmente um grande número de subordinados que devem, coordenadamente, executar uma tarefa complexa. Um sujeito assim seria um sério candidato ao stress.
Imaginemos agora um módulo que, para poder executar suas funções, tem de invocar os serviços de uma centena de outros módulos. Controlar esse nível de complexidade é bastante difícil.
Para reduzir a complexidade de um módulo devemos quebrá-lo em módulos menores e um bom critério para observar quando isso é necessário é ver o número de subordinados que ele tem, ou seja, o seu FAN-OUT.
O fan-out é o número de procedures que um módulo precisa chamar para executar suas tarefas.
Desejamos manter o fan-out dos nossos módulos baixo, reduzindo assim a complexidade da sua lógica interna.
Uma boa metáfora para pensar num módulo com fan-out elevado é imaginar um chefe que tem de comandar pessoalmente um grande número de subordinados que devem, coordenadamente, executar uma tarefa complexa. Um sujeito assim seria um sério candidato ao stress.