Io generalmente vivo secondo la regola che le variabili/funzioni globali sono malvagie e che ogni pezzo di codice dovrebbe vivere nella classe a cui appartiene.Se una classe "Utilità" è malvagia, dove inserisco il mio codice generico?
Questa è una regola molto semplice da seguire, e credo di non aver mai incontrato un problema con questa regola fino ad ora.
Oggi, tuttavia, ho bisogno di aggiungere una funzione al mio assembly piuttosto che a una classe specifica. Cioè, quasi tutte le mie classi potrebbero utilizzare per questa particolare funzione.
Dove devo inserire questa funzione (sovraccarico +1)?
Se lo inserisco in una classe "Utilità", mi sento sporco. Se lo affronterò in una classe semi-correlata e lascerò che altre classi lo chiamino direttamente, mi sento peggio.
Questo particolare pezzo di codice riduce un IList<PointF>
in un elenco normalizzato. Ritengo che aggiungerlo come metodo di estensione su IList<PointF>
potrebbe essere la soluzione migliore ...
Sono d'accordo, le variabili globali sono malvagie. Sembrano avere le menti di loro dedicate a minare il tuo codice. –
Lo stato globale è problematico, ma le funzioni globali sono solo una logica che è riutilizzabile con troppo pochi dettagli per essere degni di incapsulamento in una classe. Non vedo alcun problema con i metodi Helper o Utility raggruppati in classi statiche Helper o Utility appropriatamente denominate. –
Preferisco usare "Pull Up Method" invece della classe Utility/Helper - [Pull Up Method] (https: // refactoring.guru/pull-up-method) –