1/10/2010 11:48
El Bruno
[RESHARPER] Principio-Regla-Orden: Una clase pública, un archivo (si no lo cumples … pues ya verás !!!)

Buenas,
cuando uno es como es, no hay forma de cambiar. Venimos con malos hábitos y por ahí eso nos hace “chocar” con la forma de ser de los demás. Por ejemplo, en mi caso, cuando leo código de otras personas me “molesta” el hecho de tener más de una clase pública en un archivo .cs. Esto que en java no se puede hacer, pues en C# puede convertirse en una ensalada bastante fea.
Más allá de una cuestión estética, el hecho de tener las clases en ficheros diferentes nos ayuda a comprender un poco el alcance y funcionalidad de un proyecto determinado. Pero si por el contrario veo una clase llamada “Engine.cs”, y dentro me encuentro con 6834 líneas de código con varias clases más, pues poco puedo decir de este archivo.
Nota: Otro post especial debería ir para las clases llamadas: engine, helper, factory, etc. que peligro !!!
Pues bien, como muchas veces me piden “una justificación seria” mas allá de lo explicado anteriormente para separar las clases en distintos archivos, en ese momento pongo como referencia el libro [Framework Design Guidelines] de Krysztof Kwalina y Brad Abrahams, y la regla
A.4 File Organization is “DO NOT have more than one public type in a source file.” It then lists a few exceptions (number of generic parameters, nested, etc.).
Toma maté !!! Ahora a discutirle de principios al Krysztof (que con ese nombre asusta)
Pero claro, todavía me queda pendiente organizar todo el código y separar los archivos correspondientes. Aquí es donde entra en juego nuestro querido ReSharper, con solo 3 clicks hace este trabajo y de manera fantástica.
Para ejemplo, tomo uno de los proyectos de ejemplo de Microsoft Robotics, que inicialmente cuando uno abre la solución se encuentra con esta estructura de proyecto.
y en una de las clases nos encontramos lo siguiente
¿a que dá miedo, no?
Pues bien, para solucionar este problema selecciono el proyecto, despliego el menú contextual y selecciono la opcion [Refactor \\ Move Types Into Matching Files …]
Nos aparecen las opciones para separar en diferentes archivos clases, structs, etc.
Un par de clicks después, tenemos nuestra solución mucho más ordenada.
Respetando la regla –> File Organization is “DO NOT have more than one public type in a source file.
Saludos @ Here
El Bruno

PD: si no has leido el libro, te autodenominas developer y vives en Madrid, te lo presto –> es un must have !!!
Archivado en: Visual Studio 2010,ReSharper
Comparte este post: