2009-06-26 12 views
14

¿Qué convenciones de nomenclatura usa para espacios de nombres y clases de patrocinadores? (es decir, las clases que tienen definiciones de métodos de extensión)Convenciones de nomenclatura para espacios de nombres de métodos de extensión y clases de patrocinadores

¿Existe una convención de nomenclatura de .NET Framework estándar/recomendada? (el libro "Pautas de diseño del marco, 2da edición" solo brinda orientación sobre qué espacios de nombres no se deben usar).

Respuesta

7

del espacio de nombres - me centraría en el marco estándar. directrices para nombres de espacios de nombres. Coloque los métodos de extensión en un espacio de nombres donde normalmente se usarán/asociarán de manera significativa, y evite tener un espacio de nombres adicional solo para esto.

Para la clase patrocinadora, en este caso, es bastante importante. Intentaré elegir un nombre de clase que sea significativo, pero no parece haber una guía fija.

Lo importante aquí, sin embargo, es que la clase de patrocinador nunca es utilizada/vista directamente por el usuario de sus métodos de extensión. Siempre que se haya incluido el espacio de nombres, el método de extensión se encuentra correctamente. Personalmente utilizo algo muy similar a jrummell para mis métodos de extensión, pero Microsoft no sigue esto en Framework (un buen ejemplo de esto es la clase Enumerable).

+1

Tanto Reed como Las respuestas de jrummell son buenas. Voy a marcar esto como "La" respuesta porque profundiza. Sin embargo, una nota: el nombre de la clase patrocinadora SÍ importa en los lenguajes .NET que no admiten métodos de extensión, donde el método estático clásico llama tiene que ser usado. –

13

no he visto ninguna recomendación oficial, pero he estado organizando mis clases de extensión como [namespace] Extensiones [NombredeClase]:

ProjectName.Web.Util.ControlExtensions 
ProjectName.Data.Util.CollectionExtensions 
+3

Hago lo mismo y agrego también agrego que tiendo a colocar cualquier clase de método de extensión estática altamente especializada en los espacios de nombres relacionados a donde se usarían para que no puedan nublar intellisense para otros desarrolladores. Entonces, en otras palabras, mis clases de métodos de extensión no están necesariamente en el mismo espacio de nombres que la clase que extienden. – jpierson

+1

Hago algo similar, pero cuando agrego métodos de extensión a una * interfaz * en lugar de una clase, termino con nombres de clase feos como 'IMyInterfaceExtensions', y parece que la clase de extensiones es una interfaz :( –

Cuestiones relacionadas