Gestión de una aplicación completa con .NET Servicio de Informática TEMA 10: Lo que NO hay que hacer Introducción..................................................................................................................................... 1 Mezclar módulos............................................................................................................................. 1 No crear una estructura de clases...................................................................................................3 Insertar la logica en los aspx........................................................................................................... 3 Gestionar los eventos en Page_Load..............................................................................................3 Utilizar Response.Write................................................................................................................... 4 Generar HTML................................................................................................................................ 4 Crear campos públicos y no utilizar propiedades en las Clases......................................................4 Utilizar subrayado en los nombres de las variables.........................................................................5 Especificar el tipo de dato en el nombre de la variable...................................................................5 Poner más de una clase en el mismo fichero..................................................................................6 Introducción Al crear aplicaciones con otro tipo de entornos y lenguajes de programación vamos adquiriendo esquemas y usos de programación que no son correctos dentro la plataforma orientada a objeto de .net. Es tan importante conocer aquello que hay que evitar como las buenas prácticas A continuación se muestra una serie de cosas que hay que evitar a toda costa. Mezclar módulos La programación en .Net se caracteriza por separar las tecnologías. Por un lado el aspecto, por otro el código, por otro los recursos dependientes de la cultura y así con todos los elementos de nuestro sitio web. Es una muy mala práctica que nos lleva a crear software de muy mala calidad el mezclar los módulos que deben ir separados. Por ejemplo insertar dentro de un aspx: presentación, código de servidor, código de cliente y estilos. Cuando habría que tener 4 ficheros diferentes: .aspx, .cs, .js, .css. Por ejemplo el siguiente aspx (Default.aspx) está fatal: <%@ Page Language="C#" AutoEventWireup="true" %> <html> <head runat="server"> <title>Pagina mal</title> <script type="text/javascript"> function hola() { alert("Hola"); } </script> Tema 1 / Página 1 Gestión de una aplicación completa con .NET Servicio de Informática <style type="text/css"> .bonito{ text-decoration:none; } </style> </head> <body> <form id="form1" runat="server"> <div> <% string saludo; saludo = "Hola"; // bla bla bla %> </div> </form> </body> </html> En su lugar habría que hacer: Default.aspx <%@ Page Language="C#" AutoEventWireup="true" Inherits="_Default" %> CodeFile="Default.aspx.cs" <html> <head runat="server"> <title>Pagina mal</title> <link href="misEstilos.css" rel="stylesheet" type="text/css" /> <script src="codigoCliente.js" type="text/javascript"></script> </head> <body> <form id="form1" runat="server"> <div> </div> </form> </body> </html> Default.aspx.cs using System; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string saludo; saludo = "Hola"; // bla bla bla } } Tema 1 / Página 2 Gestión de una aplicación completa con .NET Servicio de Informática codigoCliente.js function hola() { } alert("Hola"); misEstilos.css .bonito{ text-decoration:none; } No crear una estructura de clases .Net es un sistema de programación orientado a objetos por lo tanto la calidad de las aplicaciones dependerán de un buen diseño orientado a objetos que deriva en un buen diagrama de clases. Nunca hay que utilizar programación secuencial sin jerarquía de clases. Para eso mejor no utilizar .net. Insertar la logica en los aspx Los aspx sólo se tienen que encargar de gestionar los eventos de los controles de la página. Toda la lógica de la aplicación estará en las clases, contenidas en la carpeta App_Code Además a la hora de generar las pruebas unitarias estas sólo se pueden realizar en las clases, Visual Studio no permite pruebas unitarias en los aspx Gestionar los eventos en Page_Load Cada evento lo tiene que gestionar el gestor de eventos correspondiente. No comprobar el estado de los eventos en el Page_Load Por ejemplo en este Page_Load gestionamos el evento de que el usuario pulse un botón protected void Page_Load(object sender, EventArgs e) { if (Request.Form["BotonPulsa"] == null) { HazCosicasDelBoton(); } } Tema 1 / Página 3 Gestión de una aplicación completa con .NET Servicio de Informática La forma correcta sería: protected void Page_Load(object sender, EventArgs e) { } protected void BotonPulsa_Click(object sender, EventArgs e) { HazCosicasDelBoton(); } y en el aspx asociar el evento con el botón <asp:Button ID="BotonPulsa" runat="server" onclick="BotonPulsa_Click" Text="Pulsa ya" /> Utilizar Response.Write Nunca hay que utilizar Response.Write para generar contenido en la página. Generar HTML Hay que evitar generar etiquetas html escribiéndolas directamente en la página desde programación. Response.Write("<div> Contenido div </div>"); Crear campos públicos y no utilizar propiedades en las Clases Los campos de la clase tienen que ser privados y su nombre tiene que estar precedido por _. Para acceder a los valores usaremos las propiedades Mal: public class ClaseMal { public int numero; public string nombre; } Tema 1 / Página 4 Gestión de una aplicación completa con .NET Servicio de Informática Bien: public class ClaseMal { private int _numero; private string _nombre; public int Numero { get { return _numero; } set { _numero = value; } } } public string Nombre { get { return _nombre; } set { _nombre = value; } } Utilizar subrayado en los nombres de las variables Nunca utilizar subrayado en los nombres de variables. Seguir la guía de estilo en cuanto a formato de nombres de variables. Mal string variable_mal_declarada; Bien string variableBienDeclarada; Especificar el tipo de dato en el nombre de la variable Nunca especificar el tipo de una variable en su nombre. Es innecesario en un lenguaje fuertemente tipado como .Net Mal int iCodigo; string sNombre; Bien int codigo; string nombre; Tema 1 / Página 5 Gestión de una aplicación completa con .NET Servicio de Informática Poner más de una clase en el mismo fichero Cada clase tiene que almacenarse en un fichero con su mismo nombre. No utilizar un mismo fichero para insertar más de una clase. ¡¡ que los ficheros son gratis !! Tema 1 / Página 6