Carpetas o proyectos en una solución de Visual Studio?

votos
27

Al dividir una solución en capas lógicas, ¿cuándo es mejor utilizar un proyecto separado que simplemente agruparlo en una carpeta?

Publicado el 04/08/2008 a las 23:00
fuente por usuario
En otros idiomas...                            


7 respuestas

votos
17

Por defecto, siempre solo crea una nueva carpeta dentro del mismo proyecto

  • Obtendrás ensamblaje único (sin ILMerge gimnástico adicional)
  • Es más fácil de ofuscar (porque tendrás menos tipos y métodos públicos, idealmente ninguno)

Separar tu código fuente en múltiples proyectos solo tiene sentido si ...

  • Tener algunas partes del código fuente que son parte del proyecto pero que no se pueden implementar por defecto o en absoluto (pruebas de unidades, complementos adicionales, etc.)
  • Más desarrolladores involucrados y quieres tratar su trabajo como caja negra consumible. (no muy recomendado)
  • Si puede separar claramente su proyecto en capas / módulos aislados y quiere asegurarse de que no puedan consumir miembros internos de forma cruzada . (tampoco recomendado porque tendrás que decidir qué aspecto es el más importante)

Si cree que algunas partes de su código fuente podrían ser reutilizables, aún así no las cree como un proyecto nuevo. Simplemente espere hasta que realmente desee reutilizarlo en otra solución y aislarlo del proyecto original según sea necesario. La programación no es un lego, la reutilización suele ser muy difícil y, a menudo, no ocurrirá según lo planeado.

Respondida el 04/08/2008 a las 23:45
fuente por usuario

votos
8

Separar las características en los proyectos suele ser una optimización de la arquitectura YAGNI. ¿Con qué frecuencia ha reutilizado esos proyectos separados realmente? Si no es una ocurrencia frecuente, está complicando su desarrollo, construcción, despliegue y mantenimiento para su reutilización teórica.

Prefiero separarme en carpetas (usando espacios de nombres apropiados) y refactorizar para separar proyectos cuando tienes un caso de uso de reutilización real.

Respondida el 17/08/2008 a las 18:35
fuente por usuario

votos
6

Denny escribió:

Personalmente, creo que si el código reutilizable se divide en proyectos, es más sencillo usar otros lugares que si solo estuviera en carpetas.

Realmente estoy de acuerdo con esto: si puedes reutilizarlo, debería estar en un proyecto separado. Dicho esto, también es muy difícil de reutilizar con eficacia :)

Aquí en SO, hemos tratado de ser muy simples con tres proyectos:

  • Proyecto MVC Web (que hace un buen trabajo al separar tus capas en carpetas por defecto)
  • Proyecto de base de datos para el control fuente de nuestra base de datos
  • Pruebas unitarias contra modelos / controladores MVC

No puedo hablar por todos, pero estoy contento con lo simple que lo hemos mantenido, ¡realmente acelera las construcciones!

Respondida el 04/08/2008 a las 23:42
fuente por usuario

votos
4

Normalmente hago un proyecto para la GUI, un proyecto para la lógica de negocios, un proyecto para acceso a datos y un proyecto para pruebas unitarias.

Pero a veces es prudente tener una separación basada en los servicios (si está utilizando una arquitectura orientada a servicios) como Autenticación, Ventas, etc.

Supongo que la regla de oro con la que trabajo es que si puedes verlo como un componente que tiene una clara separación de preocupaciones, entonces un proyecto diferente podría ser prudente. Pero creo que las carpetas versus los proyectos podrían ser solo una preferencia o filosofía.

Personalmente, creo que si el código reutilizable se divide en proyectos, es más sencillo usar otros lugares que si solo estuviera en carpetas.

Respondida el 04/08/2008 a las 23:14
fuente por usuario

votos
0

Realmente creo que es mejor dividir el proyecto, pero todo depende del tamaño del proyecto y del número de personas que trabajan en él.

Para proyectos más grandes, tengo proyectos para

  • acceso a datos (modelos)
  • servicios
  • Interfaz
  • pruebas

Obtuve el modelo de Rob Connery y su aplicación de escaparate ... parece funcionar muy bien.

mvc-storefront

Respondida el 16/09/2008 a las 00:45
fuente por usuario

votos
0

Si decide crear varios proyectos, asegúrese de que todos los que agreguen el código a la solución tengan plena conciencia de la intención de ellos y hagan todo lo posible para que comprendan las dependencias entre los proyectos. Si alguna vez ha tratado de resolver el problema cuando alguien se ha ido y ha agregado referencias que no deberían haber estado allí y se salió con la suya durante semanas, comprenderá este punto.

Respondida el 10/09/2008 a las 22:36
fuente por usuario

votos
0

Separar el código fuente en varios proyectos tiene sentido si ... ... Más desarrolladores participan y desea tratar su trabajo como una caja negra consumible. (no muy recomendado) ...

¿Por qué no se recomienda esto? Encontré que es una forma muy útil de administrar una aplicación con varios desarrolladores trabajando en diferentes porciones. Hace que checkins sea mucho más fácil, principalmente al eliminar virtualmente las fusiones. Muy rara vez dos desarrolladores tendrán que trabajar en el mismo proyecto al mismo tiempo.

Respondida el 17/08/2008 a las 18:19
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more