En general, vivo según la regla de que las variables/funciones globales son malas y que cada fragmento de código debe vivir en la clase a la que pertenece.Si una clase de "Utilidades" es mala, ¿dónde pongo mi código genérico?
Esta es una regla muy fácil de seguir, y creo que nunca he tenido un problema con esta regla hasta ahora.
Hoy, sin embargo, necesito agregar una función a mi ensamblaje en lugar de a una clase específica. Es decir, casi todas mis clases podrían tener un uso para esta función en particular.
¿Dónde debo poner esta función (sobrecarga de +1)?
Si lo puse en una clase de "Utilidades", me siento sucio. Si lo conecto a una clase semi relacionada, y dejo que otras clases lo llamen directamente, me siento peor.
Esta pieza de código en particular básicamente corta un IList<PointF>
en una lista normalizada. Siento ahora que agregarlo como un método de extensión en IList<PointF>
puede ser la mejor opción ...
Estoy de acuerdo, las variables globales son malvadas. Parecen tener sus propias mentes dedicadas a socavar su código. –
El estado global es problemático, pero las funciones globales son solo lógicas que se pueden volver a usar con muy pocos elementos de entrada que valga la pena encapsular en una clase. No veo ningún problema en absoluto con los métodos de Ayuda o Utilidad agrupados en las clases estáticas de Ayuda o Utilidad apropiadamente nombradas. –
Prefiero usar el "Método Pull Up" en lugar de la clase Utility/Helper - [Pull Up Method] (https: // refactoring.guru/pull-up-method) –