"Esta aplicación es demasiado pequeña para desarrollarla por capas", "Para dos llamadas a base de datos, en vez de usar procedimietnos almacenados, lo escribo a fuego en el código", "Si solo tengo 5 formularios, ¿por qué usar CSS?",...
Aquí van 3 frases que muchos hemos oído y dicho (me incluyo en ambos grupos, muy a mi pesar). Hay muchas más y la idea de esta sección que hoy se inaugura en este blog es que caigan esos mitos que dicen que "sólo las grandes aplicaciones se desarrollan siguiendo patrones, técnicas para escalabilidad, seguridad...".
Así que hoy empezamos con la primera
:"Esta aplicación es demasiado pequeña para desarrollarla por capas"¿Quien no ha oído alguna vez esta frase? Generalmente viene acompañada de expresiones como "no tenemos tiempo para andar haciendo capas"... Hombre, si la vida de tu aplicacion es de un par de meses, y se compone exclusivamente de un formulario con dos textBoxes, pues puede que tengas razón. Pero es que la mayoría de las aplicaciones tiene varios formularios, que modifican y leen datos en una base de datos y que procesan algún tipo de información, ¿no?
Basta con que la aplicación deba acceder a base de datos, para que nos planteemos seriamente meter una capa DAL (Data Access Layer). No hace falta meterla en otro proyecto de la solución. Basta con crear otra clase. Lo importante es que todo esté estructurado.
Puede que mañana, esa aplicación que ahora de basa en Acces, pase a basarse en SQL Server (o MySQL, Oracle...) y entonces tendré que tocar clases que no debería tener que tocar.
Y si trabajo en equipo, la justificación es mucho más obvia. Si el experto en aplicaciones y el experto en bases de datos no es la misma persona, es mejor que esté en dos clases distintas, para que puedan trabajar a la vez. Y si el experto en interfaces no coincide con ninguno de los otros, necesitaremos 3 capas...
Por capas, no quiero decir que deba estar cada una en una máquina, insisto, sino es simplemente a nivel de organización (podeis dar un ojo a
este post, para ver la opinion que suscita la separación física).
En este artículo, David Hayden, nos compara también la división en layers y la de tiers, pero además hace un inciso en la importancia del TDD para mantener las aplicaciones divididas en layers y simples.
¿Cuantas capas debo usar? Bueno, .NET nos permite diferenciar la presentación del código de la página. En caso de que la aplciación sea muy simple, podemos usar ese código para meter la capa de negocio. Pero en caso de que algo, lo que sea, de esa capa de negocio se use en 2 o más formularios, deberíamos usar otra clase aparte. Para el diálogo aplicacion-base de datos, debería haber otra capa. Sirva como truco, que ninguna clase a parte de estas del DAL debería importar ninguna librería que se llame SQL, o JDBC, u Oracle...
Bueno, la próxima vez intentaremos matar otro de esos mitos que ayudar, lo que se dice ayudar, no ayudan demasiado.
Un saludo,