Sim querido, a função pode ser cada vez menor e se é bom ou ruim, depende da linguagem / estrutura que você está usando.
Na minha opinião, eu trabalho principalmente em Front End Technologies, as Small Functions são usadas principalmente como funções auxiliares; você provavelmente as usará muito quando estiver trabalhando com filtros pequenos e usando a mesma lógica em seu aplicativo. Se seu aplicativo tiver muita lógica comum, haverá várias funções pequenas.
Porém, em um aplicativo em que você não possui lógica comum, não será obrigado a criar pequenas funções, mas poderá dividir seu código em segmentos em que fica fácil gerenciar e entender.
Em geral, dividir seu código enorme em pequenas funções é uma abordagem muito boa. Em estruturas e linguagens modernas, você será obrigado a fazê-lo, por exemplo,
data => initScroll(data)
é uma função anônima no ES 2017 JavaScript e Typescript
getMarketSegments() {
this.marketService.getAllSegments(this.project.id)
.subscribe(data => this.segments = data, error => console.log(error.toString()));
}
no código acima, você pode ver 3 declarações de funções e 2 chamadas de funções. Esta é uma simples chamada de serviço no Angular 4 com texto datilografado. Você pode pensar nisso como seus requisitos
([] 0)
([x] 1)
([x y] 2)
Acima, são 3 funções anônimas na linguagem clojure
(def hello (fn [] "Hello world"))
O acima é uma declaração funcional em clojure
Portanto, sim, as FUNÇÕES podem ser menores, mas se é bom ou ruim, se você tem funções como:
incrementNumber(numb) { return ++numb; }
Bem, não é uma boa prática fazê-lo, mas e se você estiver usando esta função em uma tag HTML, como fazemos no Angular Framework, se não houver suporte para Incremento ou Decremento em Modelos HTML Angulares, essa seria a solução para mim.
Vamos dar outro exemplo
insertInArray(array, newKey) {
if (!array.includes(newKey)) {
array.push(newKey);
}
}
O exemplo acima é essencial ao reproduzir quando matrizes dentro de modelos HTML angulares. Então, às vezes, você terá que criar pequenas funções
Assert.AreEqual<int>(expected, actual, message, arg1, arg2, arg3, ...);
. O segundo está bem como está. Eu incluiria potencialmente um sinalizador bool opcional que ditaria se lançaria uma exceção / etc. caso o retorno de chamada não seja uma função.