Convención sobre configuración en mvvmcross
MVVMCross, un marco MVVM multiplataforma, utiliza el concepto de "Convención sobre Configuración" para simplificar el proceso de desarrollo reduciendo la necesidad de una configuración explícita. Este enfoque permite a los desarrolladores centrarse en aspectos no convencionales de su aplicación, aprovechando las convenciones predeterminadas para manejar escenarios típicos.
Principios básicos
En MVVMCross, la convención sobre la configuración se aplica principalmente en cómo se vinculan las vistas y los modelos de vista. Por defecto, MVVMCross utiliza una convención de nomenclatura para asociar las vistas con sus modelos de vista correspondientes. Por ejemplo, si tiene un `Tipview`, MVVMCross buscará automáticamente un` TipviewModel` para combinarlo. Esta convención elimina la necesidad de una configuración explícita, lo que facilita la gestión de la relación entre vistas y modelos de vista [11].
Implementación
1. Convención de nombres de ViewModel: MVVMCross sigue una convención específica de nomenclatura en la que un modelo ViewModel se nombra típicamente al agregar "modelo" al nombre de la vista. Por ejemplo, `FirstView` está vinculado a` FirstViewModel` de forma predeterminada [5] [11].
2. Vinculación automática: al usar esta convención, MVVMCross localiza y vincula automáticamente el modelado de vista apropiado a su vista. Esto es particularmente útil cuando no usa parámetros genéricos para definir explícitamente estas relaciones [11].
3. Flexibilidad: mientras MVVMCross se basa en convenciones por simplicidad, también proporciona flexibilidad. Los desarrolladores pueden anular estas convenciones cuando sea necesario mediante el uso de parámetros genéricos o configuraciones personalizadas. Esto permite un mayor control sobre cómo se asocian vistas y modelos de vista, especialmente en aplicaciones complejas [11].
Beneficios
- Configuración reducida: aprovechando las convenciones, los desarrolladores pasan menos tiempo escribiendo código de configuración, centrándose en su lugar en la lógica de la aplicación.
- Leyabilidad mejorada: la base de código se vuelve más legible a medida que se minimizan las tareas de configuración repetitiva.
- Mantenimiento simplificado: con menos configuraciones explícitas, mantener y actualizar aplicaciones se vuelve más fácil.
Personalización
Mientras que MVVMCross depende en gran medida de las convenciones, también admite la personalización. Los desarrolladores pueden anular los comportamientos predeterminados implementando lógica personalizada en clases de clave como `App` y` Setup`. Por ejemplo, puede personalizar el contenedor IOC o cambiar la forma en que se construyen e inicializan los modelos de vista [9].
En resumen, la implementación de MVVMCross de la convención sobre la configuración optimiza el proceso de desarrollo al automatizar las tareas típicas, lo que permite a los desarrolladores concentrarse en aspectos únicos de sus aplicaciones. Este enfoque mejora la productividad y simplifica el mantenimiento de la aplicación al tiempo que proporciona la flexibilidad necesaria para escenarios complejos.
Citas:[1] https://en.wikipedia.org/wiki/convention_over_configuration
[2] https://visualstudiomagazine.com/articles/2018/05/08/build-a-xamarin.forms-application.aspx
[3] https://leaware.com/creating-cross-platform-xamarin-applications-using-the-mvvmcrossframework/
[4] https://learn.microsoft.com/en-us/archive/msdn-magazine/2009/february/patterns-in-practice-convention-over-configuration
[5] https://www.codeproject.com/articles/863695/introduction-to-mvvmcross-platform
[6] https://github.com/mvvmcross/mvvvmcross-samples
[7] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[8] https://books.sonatype.com/mvnref-book/reference/installation-sect-conventionConfiguration.html
[9] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-and-setup
[10] https://www.mvvmcross.com/documentation/getting-started/getting-started
[11] https://www.mvvmcross.com/documentation/tutorials/tipcalc/a-note-upout-views-and-viewmodels
[12] https://www.mvvmcross.com/documentation/getting-started/mvvmcross-overview