Sì cara, la funzione potrebbe essere sempre più piccola e se è buona o cattiva dipende dal linguaggio / quadro che stai utilizzando.
A mio avviso, lavoro principalmente su tecnologie front-end, le piccole funzioni sono principalmente utilizzate come funzioni di supporto che saranno costrette a usarle molto quando si lavora con piccoli filtri e si utilizza la stessa logica in tutta l'applicazione. Se la tua applicazione ha troppe logiche comuni, allora ci saranno un sacco di piccole funzioni.
Ma in un'applicazione in cui non hai una logica comune non sarai obbligato a creare piccole funzioni ma puoi suddividere il codice in segmenti in cui diventa facile da gestire e comprendere.
In generale, suddividere il tuo enorme codice in una piccola funzione è un ottimo approccio. Nei quadri e nei linguaggi moderni sarai obbligato a farlo, ad es
data => initScroll(data)
è una funzione anonima in ES 2017 JavaScript e Typescript
getMarketSegments() {
this.marketService.getAllSegments(this.project.id)
.subscribe(data => this.segments = data, error => console.log(error.toString()));
}
nel codice sopra puoi vedere la dichiarazione di 3 funzioni e 2 chiamate di funzione, questa è una semplice chiamata di servizio in Angular 4 con Typescript. Puoi pensarlo come le tue esigenze
([] 0)
([x] 1)
([x y] 2)
Quanto sopra sono 3 funzioni anonime in linguaggio clojure
(def hello (fn [] "Hello world"))
Quella sopra è una dichiarazione funzionale in clojure
Quindi sì, le FUNZIONI possono essere più piccole ma se sono buone o cattive se hai funzioni come:
incrementNumber(numb) { return ++numb; }
Beh, non è una buona pratica farlo, ma cosa succede se si utilizza questa funzione in un tag HTML come facciamo in Angular Framework se non ci fosse supporto per l'incremento o il decremento nei modelli HTML angolari, questa sarebbe stata la soluzione per me.
Facciamo un altro esempio
insertInArray(array, newKey) {
if (!array.includes(newKey)) {
array.push(newKey);
}
}
L'esempio sopra è d'obbligo quando si gioca quando si trovano array all'interno di modelli HTML angolari. Quindi a volte dovrai creare piccole funzioni
Assert.AreEqual<int>(expected, actual, message, arg1, arg2, arg3, ...);
. Il secondo va bene così com'è. Includerei potenzialmente un flag bool opzionale che detterebbe se lanciare un'eccezione / ecc. nel caso in cui il callback non sia una funzione.