¿Qué convención de nomenclatura para el archivo C # que contiene varias clases?
20
En proyectos de C #, con frecuencia agrupamos clases pequeñas y estrechamente relacionadas en el mismo .csarchivo. Esta práctica reduce la fricción de lidiar con una miríada de archivos que contienen casi ningún código real. Sin embargo, ¿existe una práctica establecida para nombrar el archivo que contiene varias clases?
francamente, prefiero una clase de un archivo, incluso para clases muy pequeñas
Felice Pollano
Puede elegir nombrarlo según el grupo al que pertenecen estas clases estrechamente relacionadas.
V4Vendetta
¿Quizás esas clases SON demasiado pequeñas? Personalmente, solo agrupo varias enumeraciones en un archivo (a veces con la clase, a veces todas las enumeraciones juntas, según el contexto).
Konrad Morawski
@Felice: mira MSpec :)
Bryan Boettcher
Respuestas:
18
Mi consejo: evite archivos que contengan varias clases y nombres de archivos == clases, incluso si quiere decir que hay demasiados archivos. Intenta organizarlos en carpetas. En casos muy especiales, es posible que tenga clases anidadas. En este caso, tiene sentido separar la clase principal y una clase anidada en diferentes archivos que tienen una clase parcial. En este caso, uso la siguiente convención de nomenclatura.
MyEnumerable.cs
MyEnumerable.MyEnumerator.cs
Probablemente también pueda usar nombres de archivos de varias partes en su caso.
Una idea mas. Puede agrupar varios archivos .cs dentro de Visual Studio Project para que todos aparezcan bajo el mismo nodo en el árbol (como archivos .Designer.cs). Esto te indicará que las clases están estrechamente unidas.
6
Intente evitar tener más de una clase en un archivo, no más de una clase pública al menos. Al nombrar archivos de clase con varias clases, elija un nombre de archivo descriptivo.
Tenga en cuenta que al hacer una pregunta sobre cómo nombrar dichos archivos, ya ha identificado un olor a código que es problemático para usted, y este es un problema que no desaparecerá fácilmente.
Independientemente del razonamiento, encontrará que es difícil elegir nombres razonables cuando tiene más de una clase en un archivo, porque incluso si los archivos están relacionados de alguna manera, siempre habrá la tentación de incluir algo que no se ajusta exactamente al nombre del grupo que asigna a un conjunto de clases.
La respuesta breve, por lo tanto, es que no existe un estándar reconocido o establecido para nombrar este tipo de archivos. Mi sugerencia sería sentarse con su equipo y buscar la organización de su código, y aplicar un poco de esfuerzo de refactorización para arreglar un poco las cosas.
Sin embargo, para hacer las cosas un poco más fáciles de comenzar, preguntaría si las clases adicionales están anidadas o son independientes. Si son independientes, estas clases se pueden dividir más fácilmente en sus propios archivos, con cada archivo nombrado para la clase individual contenida dentro. Si está anidado, entonces es posible que se deban tomar más decisiones sobre cómo deberían organizarse tales clases, sin embargo, las clases anidadas pueden no necesitar eliminarse de inmediato y, por lo tanto, los archivos se nombrarían para la clase más externa. En lo que respecta a la anidación, existen muchos argumentos en contra, y algunos razonables para anidar en algunas circunstancias, y mi consejo sería preguntar si el espacio de nombres razonable y la creación de una estructura de código fuente más organizada podría ser una mejor manera de abordar el problema.
Sin embargo, de manera realista, encontrará que al final de la vida útil de su proyecto, habrá deseado que todos sus archivos contengan solo una clase y una estructura de directorio / espacio de nombres agradable que lo acompañe.
Solía ser todo por tener varias clases en un archivo, pero desde que comencé a trabajar como programador (en lugar de estar solo), descubrí que puede ser una pesadilla de mantenimiento con muchas clases en un solo archivo. Aunque, es cierto, Visual Studio puede ayudar mucho usando F12 (vaya a la definición).
Lo que comencé a hacer es usar una convención de nomenclatura de la siguiente manera: namespace.classname.cs De esa manera sé exactamente qué hay en cada archivo y también proporciona algún tipo de contexto general del archivo. Si la clase va a estar en el espacio de nombres predeterminado, entonces sigo adelante y solo uso classname.cs (similar a Java).
Respuestas:
Mi consejo: evite archivos que contengan varias clases y nombres de archivos == clases, incluso si quiere decir que hay demasiados archivos. Intenta organizarlos en carpetas. En casos muy especiales, es posible que tenga clases anidadas. En este caso, tiene sentido separar la clase principal y una clase anidada en diferentes archivos que tienen una clase parcial. En este caso, uso la siguiente convención de nomenclatura.
Probablemente también pueda usar nombres de archivos de varias partes en su caso.
fuente
Intente evitar tener más de una clase en un archivo, no más de una clase pública al menos. Al nombrar archivos de clase con varias clases, elija un nombre de archivo descriptivo.
Referencias
fuente
Tenga en cuenta que al hacer una pregunta sobre cómo nombrar dichos archivos, ya ha identificado un olor a código que es problemático para usted, y este es un problema que no desaparecerá fácilmente.
Independientemente del razonamiento, encontrará que es difícil elegir nombres razonables cuando tiene más de una clase en un archivo, porque incluso si los archivos están relacionados de alguna manera, siempre habrá la tentación de incluir algo que no se ajusta exactamente al nombre del grupo que asigna a un conjunto de clases.
La respuesta breve, por lo tanto, es que no existe un estándar reconocido o establecido para nombrar este tipo de archivos. Mi sugerencia sería sentarse con su equipo y buscar la organización de su código, y aplicar un poco de esfuerzo de refactorización para arreglar un poco las cosas.
Sin embargo, para hacer las cosas un poco más fáciles de comenzar, preguntaría si las clases adicionales están anidadas o son independientes. Si son independientes, estas clases se pueden dividir más fácilmente en sus propios archivos, con cada archivo nombrado para la clase individual contenida dentro. Si está anidado, entonces es posible que se deban tomar más decisiones sobre cómo deberían organizarse tales clases, sin embargo, las clases anidadas pueden no necesitar eliminarse de inmediato y, por lo tanto, los archivos se nombrarían para la clase más externa. En lo que respecta a la anidación, existen muchos argumentos en contra, y algunos razonables para anidar en algunas circunstancias, y mi consejo sería preguntar si el espacio de nombres razonable y la creación de una estructura de código fuente más organizada podría ser una mejor manera de abordar el problema.
Sin embargo, de manera realista, encontrará que al final de la vida útil de su proyecto, habrá deseado que todos sus archivos contengan solo una clase y una estructura de directorio / espacio de nombres agradable que lo acompañe.
Aclamaciones,
fuente
Solía ser todo por tener varias clases en un archivo, pero desde que comencé a trabajar como programador (en lugar de estar solo), descubrí que puede ser una pesadilla de mantenimiento con muchas clases en un solo archivo. Aunque, es cierto, Visual Studio puede ayudar mucho usando F12 (vaya a la definición).
Lo que comencé a hacer es usar una convención de nomenclatura de la siguiente manera: namespace.classname.cs De esa manera sé exactamente qué hay en cada archivo y también proporciona algún tipo de contexto general del archivo. Si la clase va a estar en el espacio de nombres predeterminado, entonces sigo adelante y solo uso classname.cs (similar a Java).
fuente