Usando C # come esempio, le estensioni su IEnumerable
per consentire codice come collection.Each(i => i.DoStuff)
piuttosto che un foreach
loop sono generalmente disapprovate, principalmente perché non seguono le convenzioni LINQ di essere funzionali, in quanto le funzioni prendono le dichiarazioni piuttosto che le espressioni, scritte per avere effetti collaterali.
La stessa cosa si applica a un'estensione per consentire il codice come ...
10.times(() => ThingIWantToDo10Times())
Da una parte è ancora chiaramente non funzionale, ma dall'altra non è un'estensione su IEnumerable
.
Un'estensione come questa potrebbe essere disapprovata per le stesse ragioni?