A lógica por trás da divisão de funções não é quantas vezes serão chamadas , mantendo-as pequenas e impedindo-as de fazer várias coisas diferentes.
livro de Bob Martin Código Limpo fornece boas orientações sobre quando dividir uma função:
- Functions should be small; how small? See the bullet bellow.
- Functions should do only one thing.
Portanto, se a função tiver várias telas, divida-a. Se a função fizer várias coisas, divida-a.
Se a função é feita de etapas seqüenciais destinadas a um resultado final, não é necessário dividi-la, mesmo que seja relativamente longa. Mas se as funções fazem uma coisa, então outra, depois outra e depois outra, com condições, blocos logicamente separados, etc., ela deve ser dividida. Como resultado dessa lógica, as funções devem ser geralmente pequenas.
Se f1()
fizer autenticação, f2()
analisará a entrada em partes menores, se f3()
fizer cálculos e f4()
logs ou persistir, eles obviamente deverão ser separados, mesmo quando cada um deles for chamado apenas uma vez.
Dessa forma, você pode refatorar e testá-los separadamente, além da vantagem de ser mais fácil de ler .
Por outro lado, se toda a função for:
a=a+1;
a=a/2;
a=a^2
b=0.0001;
c=a*b/c;
return c;
então não há necessidade de dividi-lo, mesmo quando a sequência de etapas é longa.