metodos extensores c# extension-methods

extensores - Mejores prácticas: espacio de nombres de métodos de extensión C#y promoción de métodos de extensión



c# metodos extensores (9)

Sé que ya existe una post describe casi lo mismo, pero creo que la mía es un poco diferente.

Lo que me gustaría saber es cómo organizas tus métodos de extensión en términos de asignar el espacio de nombres. Actualmente, para los métodos de extensión en nuestro marco, utilizo el siguiente patrón de espacio de nombres

  • MyCompany.Web.Utils

y dentro tengo las clases de método de extensión. Esto está bien para mí con la desventaja de que los extensores no son inmediatamente visibles para nuestros desarrolladores de software. Considere el caso donde tengo una clase StringExtender que proporciona un método de extensión bastante útil "In" que amplía el objeto String . Teniendo el método de extensión dentro del espacio de nombres mencionado anteriormente, nuestros programadores no verán el método de extensión a menos que incluyan explícitamente su espacio de nombres. En cambio, si pongo el método de extensión en el espacio de nombres del System , todos lo verán de inmediato, pero he leído que es una mala práctica .

Entonces mi pregunta es cómo promocionas tus métodos de extensión cuando son utilizados por tus desarrolladores.


@ Juri- Si lo piensas, este es el mismo problema que los desarrolladores sabiendo que la clase X existe en .NET Framework. La comunicación es clave para que todos los miembros del equipo utilicen las clases correctas, ya sean métodos de extensión o algún otro ayudante.

Como ha declarado JP, a menudo veo los métodos de extensión en algún tipo de subcarpeta llamada Extensiones. Afortunadamente, cuando diga que usa my.empresa.web.utils, ¿el espacio de nombres está realmente encasillado?

Incluso si los coloca en un buen lugar, no hay garantía del 100% de que otros desarrolladores los utilicen.


El problema aquí no es nombrar el espacio de nombres, es la falta de documentación y educación de sus desarrolladores.

Póngalos en el espacio de nombres que tenga sentido, escriba un artículo wiki que documente todos sus métodos de extensión, luego envíe un correo electrónico a sus desarrolladores con un enlace al artículo de la wiki.


Este no es un problema de espacio de nombres, es un problema de comunicación.

Si estos métodos son útiles, debe comunicar esto a los desarrolladores y, a la inversa, actuar de acuerdo con los comentarios de los desarrolladores (con los niveles de juicio adecuados).

Colocar cualquier cosa en el espacio de nombres del sistema es una receta para el desastre y la confusión posterior. Las únicas veces que quiera hacer esto es utilizar la funcionalidad de ''back-ports'' en frameworks anteriores y entonces probablemente no deba hacerlo usted mismo, pero debería usar algo como LinqBridge para hacerlo.

Tenga cuidado con el deseo de incluir todas las extensiones en un espacio de nombres a menos que realmente sean muy útiles en conjunto. Algunos desarrolladores pueden encontrar la madera perdida para los árboles si son bombardeados con todo y el fregadero de la cocina a través de Intellisense.

Mantener el espacio de nombres como el nombre de la empresa es sensato en general para evitar confusiones.


Los ponemos todos en su propio espacio de nombres Company.Common.Extensions . De esta forma, si tiene alguno de nuestros métodos de extensión, los tiene todos. Además, al menos en mi tienda, no tenemos que preocuparnos de que nuestros desarrolladores no conozcan los métodos de extensión. Tengo la preocupación opuesta, ¡sobrecarga del método de extensión! :)


Ponemos todo en el mismo Namespace y Class, sin embargo usamos clases parciales para mantenerlos organizados.

Por ejemplo:

ExtensionMethods-String.cs

ExtensionMethods-DataObject.cs

ExtensionMethods-Debug.cs

... todos tienen clases parciales ...


Puede lograr lo que quiere poniendo métodos de extensión en el espacio de nombres global. Eso es lo que hago y están disponibles sin necesidad de using declaraciones.


Sí, creo que poner los métodos de extensión en los nombres de las empresas es las mejores prácticas. ponerlo en el espacio de nombres del sistema es una operación perezosa


Soy tonto, perezoso y minimalista, así que los coloco en el mismo espacio de nombres que el tipo que extienden. De esta forma, no es necesario utilizar declaraciones, documentación o correos electrónicos adicionales sobre ellos (Winston).