variable namespace globales application c# oop global-variables utility-method

c# - namespace - Si una clase de "Utilidades" es mala, ¿dónde pongo mi código genérico?



variable global c# (3)

Debería ponerlo en una clase ''ListUtilities'' o PointListUtilities , por supuesto. Entonces no está rompiendo el principio de responsabilidad única, que es el problema principal con una clase general de ''Utilidades''.

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.

Esta es una regla muy fácil de seguir, y creo que nunca me he encontrado con un problema con esta regla hasta ahora.

Hoy, sin embargo, necesito agregar una función a mi ensamble en lugar de una clase específica. Es decir, casi todas mis clases podrían ser útiles para esta función en particular.

¿Dónde debería poner esta función (sobrecarga de +1)?

Si lo pongo 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 IList<PointF> ...


No hay nada de malo con las variables y métodos "globales". Los usas todo el tiempo Al framework le gusta llamarlos clases "estáticas" o métodos "estáticos".

Raramente necesito hacerlo, pero generalmente agrego una clase estática interna Util en el espacio de nombres que el método / variable es necesario para C # y un módulo para VB.NET.

Muestras de .NET Framework

  • System.Collections.Specialized.CollectionsUtil
  • System.Net.WebUtility
  • Verifique el código fuente de Microsoft para .NET Framework. Encontrará numerosas clases de utilidad interna.

Si se trata de una operación en un IList<PointF> , entonces debe ser un método de extensión en IList<PointF> .

En general, se deben evitar las clases de tipo Utils y Helper . En la mayoría de los casos, descubrirá que lo que puede pensar es un método de utilidad, en realidad es un método bastante específico que probablemente pertenece a una clase propia (como usted dice). Sin embargo, habrá casos específicos de dominio donde las clases similares a Util (clases que agrupan métodos útiles relacionados) son entidades válidas.