una saber ruta relativa proyecto obtener manipular guardar existe directorios directorio crear carpeta buscar archivos archivo c# winforms

saber - ruta relativa c#



Winforms: la mejor estructura de directorio/proyecto (3)

Para mí, depende del modelo que estoy siguiendo. Si estoy usando MVC, sería

Project -Models -Controllers -Views

O para MVP sería

Project -Models -Presenters -Views

Bajo las vistas, los separé en espacios de nombres relevantes para los controladores, es decir, si tengo un controlador para manejar las transacciones de inventario, podría tenerlo como

Project -Models --Inventory -Controllers --Inventory ---TransactionsController.cs -Views --Inventory ---Transactions ----EditTransactionsView.dfm

Para las interfaces, ubico la interfaz en el mismo directorio que las implementaciones.

Quería ver los pensamientos de la gente sobre la mejor manera de organizar la estructura de directorios y proyectos en un proyecto / solución para una aplicación C # de winforms.

La mayoría de las personas está de acuerdo en que es mejor separar la vista, la lógica de negocios, los objetos de datos, las interfaces, pero quería ver cómo las diferentes personas abordan esto. Además, aísle las dependencias de terceros en los proyectos de implementación y luego tenga proyectos de interfaz exportados que los consumidores refieran

  • View.csproj
  • BusinessLogic.csproj
  • Data.csproj
  • CalculatorService.Exported.csproj (interfaces)
  • CalculatorService.MyCalcImpl.csproj (una implementación)
  • CalculatorService.MyCalcImpl2.csproj (otra implementación)

    Además, en términos de estructura de carpetas, ¿qué es mejor anidar?

    Interfaces
    --- IFoo
    --- IData
    Impl
    --- Foo
    ---Datos

    o

    Producto
    --- Interfaces / IProduct
    --- Impl / Producto
    Foo
    --- Impl / Foo
    --- Interfaces / IFoo

    Todos tratando de impulsar las dependencias desacopladas en las abstracciones y la capacidad rápida para las implementaciones cambiadas.

    ¿Pensamientos? ¿Mejores prácticas?


  • Por lo general, mantenemos los proyectos de SourceSafe, los nombres de los proyectos, los espacios de nombres y las estructuras de directorios sincronizados.

    Por ejemplo, dado el nombre de nuestra empresa como XCENT, la estructura de SourceSafe y la estructura de directorios correspondiente para App1 se ve así:

    /XCENT /XCENT/App1 /XCENT/App1/UI /XCENT/App1/UI/Test //test harness for UI /XCENT/App1/Data /XCENT/App1/Data/Test //test harnesses for Data

    etc.

    El proyecto de UI se llama XCENT.App1.UI.cproj, y las clases dentro de ese espacio de nombres son XCENT.App1.UI

    También trabajamos para muchos clientes, de modo que el trabajo específico para ellos está precedido de su nombre. Client1 / App1 / UI, etc.

    Todos en nuestra empresa utilizan las mismas convenciones y de inmediato queda claro dónde encaja todo.

    Si tiene sentido segmentar el espaciado lógico más adelante, lo hacemos. Dicha otra segmentación incluye .Export, .Import, .Reporting, .Security, etc.


    Una respuesta tardía, pero también puede sonar.

    Personalmente he usado carpetas basadas en el tipo de artículo real que es. Por ejemplo:

    - Project + Forms + Classes + UserControls + Resources + Data

    Así que termino con:

    new Forms.AboutForm().ShowDialog(); Controls.Add(new Controls.UberTextBox());