Guía complementaria - Clase 3: Tablas, formularios y atributos en HTML
Unidad 1 — Clase 3
Tablas, formularios, atributos y buenas prácticas en HTML
En esta clase empezamos a trabajar con dos elementos que aparecen de forma permanente en sitios web reales: por un lado, la necesidad de mostrar información ordenada, y por otro, la posibilidad de recibir datos del usuario. Para eso, HTML nos ofrece dos herramientas centrales: las tablas y los formularios.
Además, esta clase incorpora un tema que al principio puede parecer secundario, pero que después resulta fundamental para escribir HTML correctamente: los atributos. Muchas veces una etiqueta sola no alcanza. Necesita datos adicionales para funcionar como corresponde, identificarse, vincularse con otros elementos o definir mejor su propósito.
La idea no es aprender etiquetas aisladas, sino entender cuándo corresponde usar cada una, qué problema resuelve, cómo escribir un HTML más claro y qué errores conviene evitar desde el comienzo.
Antes de empezar: qué resuelve cada estructura
HTML se usa para estructurar contenido. Eso parece simple, pero en la práctica implica distintas necesidades. No es lo mismo escribir un texto, listar elementos, mostrar datos comparativos o pedirle información al usuario.
Por ejemplo:
a veces necesitamos un título y un párrafo;
a veces necesitamos una lista de temas;
a veces necesitamos una tabla con horarios;
a veces necesitamos un formulario para completar datos.
Cada uno de esos casos requiere etiquetas distintas.
Ejemplo: una lista de temas
<ul>
<li>HTML semántico</li>
<li>Tablas</li>
<li>Formularios</li>
</ul>
Ejemplo: un cronograma
<table>
<tr>
<th>Día</th>
<th>Materia</th>
<th>Horario</th>
</tr>
<tr>
<td>Miércoles</td>
<td>Front-End</td>
<td>18:00 a 20:10</td>
</tr>
</table>
Ejemplo: un formulario de inscripción
<form>
<label for="nombre">Nombre</label>
<input type="text" id="nombre" name="nombre">
</form>
Lo importante es entender que no todo contenido se representa de la misma manera. Una parte esencial de aprender HTML consiste justamente en elegir la estructura adecuada para cada situación.
Tablas en HTML
Qué es una tabla
Una tabla sirve para representar información organizada en:
filas,
columnas,
celdas.
No se usa porque “queda ordenado visualmente”, sino porque los datos tienen una estructura tabular y resulta natural leerlos de esa manera.
Casos en los que una tabla tiene sentido
una lista de alumnos,
un cronograma de clases,
una comparación de precios,
horarios de atención,
stock de productos,
resultados de evaluaciones.
Casos en los que una tabla no tiene sentido
maquetar toda una página;
poner bloques de texto uno al lado del otro;
construir un menú de navegación;
acomodar visualmente elementos que en realidad deberían resolverse con CSS.
Durante muchos años se usaron tablas para diseñar páginas completas, pero esa práctica hoy se considera incorrecta. Las tablas son para datos, no para maquetación.
Estructura básica de una tabla
Las etiquetas principales son:
<table>: define la tabla completa;<tr>: define una fila;<th>: define una celda de encabezado;<td>: define una celda de dato.
Primer ejemplo
<table>
<tr>
<th>Nombre</th>
<th>Edad</th>
<th>Curso</th>
</tr>
<tr>
<td>Ana</td>
<td>22</td>
<td>Front-End</td>
</tr>
<tr>
<td>Lucas</td>
<td>25</td>
<td>Back-End</td>
</tr>
</table>
Cómo se interpreta
la tabla comienza con
<table>;dentro de ella se crean filas con
<tr>;la primera fila suele contener encabezados, usando
<th>;las filas siguientes contienen los datos, usando
<td>.
La primera fila ayuda a interpretar qué representa cada columna. Por eso es importante que esté bien definida.
Diferencia entre <th> y <td>
Aunque a simple vista puedan parecer similares, no cumplen exactamente la misma función.
<th>
Se usa para encabezados.
Generalmente nombra una categoría o identifica el tipo de dato que contendrá la columna o la fila.
<td>
Se usa para datos comunes.
Ejemplo
<tr>
<th>Producto</th>
<th>Precio</th>
</tr>
<tr>
<td>Teclado</td>
<td>$25000</td>
</tr>
Un error frecuente es usar <td> en todos lados simplemente porque “igual se ve”. Eso puede mostrar algo parecido visualmente, pero semánticamente está mal. Si una celda cumple función de encabezado, corresponde usar <th>.
Estructura más completa: caption, thead, tbody y tfoot
Además de las etiquetas básicas, HTML permite organizar mejor una tabla usando otras etiquetas semánticas.
<caption>: define el título de la tabla;<thead>: agrupa la cabecera;<tbody>: agrupa los datos principales;<tfoot>: agrupa una fila de cierre, totales o resumen.
Ejemplo
<table>
<caption>Horarios de cursada</caption>
<thead>
<tr>
<th>Día</th>
<th>Materia</th>
<th>Horario</th>
</tr>
</thead>
<tbody>
<tr>
<td>Miércoles</td>
<td>Front-End</td>
<td>18:00 a 20:10</td>
</tr>
<tr>
<td>Viernes</td>
<td>Modelado</td>
<td>18:00 a 20:10</td>
</tr>
</tbody>
</table>
Por qué conviene usarlas
Estas etiquetas no solo ordenan mejor el código. También ayudan a que la tabla tenga una estructura más clara, facilitan la lectura del documento y aportan sentido semántico.
Ejemplo con pie de tabla
<table>
<caption>Ventas del día</caption>
<thead>
<tr>
<th>Producto</th>
<th>Cantidad</th>
<th>Total</th>
</tr>
</thead>
<tbody>
<tr>
<td>Mouse</td>
<td>3</td>
<td>$45000</td>
</tr>
<tr>
<td>Teclado</td>
<td>2</td>
<td>$50000</td>
</tr>
</tbody>
<tfoot>
<tr>
<td colspan="2">Total general</td>
<td>$95000</td>
</tr>
</tfoot>
</table>
Unir celdas: colspan y rowspan
A veces una celda necesita ocupar más de una columna o más de una fila.
colspan
Hace que una celda se extienda sobre varias columnas.
rowspan
Hace que una celda se extienda sobre varias filas.
Ejemplo con colspan
<table>
<tr>
<th colspan="2">Datos personales</th>
</tr>
<tr>
<td>Nombre</td>
<td>Lucía</td>
</tr>
</table>
Ejemplo con rowspan
<table>
<tr>
<th>Alumno</th>
<th>Materia</th>
</tr>
<tr>
<td rowspan="2">Martín</td>
<td>HTML</td>
</tr>
<tr>
<td>CSS</td>
</tr>
</table>
Estos atributos son útiles, pero conviene usarlos con criterio. Si una tabla tiene demasiadas combinaciones de celdas, puede volverse más difícil de leer y mantener.
Buenas prácticas al trabajar con tablas
Conviene tener presentes algunas ideas simples:
usar tablas solo cuando la información realmente sea tabular;
definir encabezados claros;
mantener una estructura consistente entre filas y columnas;
no sobrecargar la tabla con demasiada información;
usar
captioncuando haga falta dar contexto.
Ejemplo bien organizado
<table>
<caption>Inscriptos al curso de Front-End</caption>
<thead>
<tr>
<th>Apellido y nombre</th>
<th>Edad</th>
<th>Turno</th>
<th>Modalidad</th>
</tr>
</thead>
<tbody>
<tr>
<td>Gómez, Ana</td>
<td>21</td>
<td>Noche</td>
<td>Presencial</td>
</tr>
<tr>
<td>Pérez, Lucas</td>
<td>24</td>
<td>Tarde</td>
<td>Virtual</td>
</tr>
<tr>
<td>Ruiz, Carla</td>
<td>19</td>
<td>Noche</td>
<td>Presencial</td>
</tr>
</tbody>
</table>
Formularios en HTML
Si las tablas sirven para mostrar datos, los formularios sirven para recibirlos.
Qué es un formulario
Un formulario es una sección de la página en la que el usuario puede:
escribir información,
seleccionar opciones,
marcar casillas,
enviar datos.
Casi cualquier sitio web que tenga interacción usa formularios: inicio de sesión, registro, contacto, compra, búsqueda, encuestas o inscripción.
La etiqueta <form>
Todo formulario comienza con la etiqueta <form>.
Ejemplo básico
<form>
<label for="nombre">Nombre</label>
<input type="text" id="nombre" name="nombre">
</form>
La etiqueta <form> contiene todos los campos relacionados con el envío de información.
action y method
Dos atributos muy frecuentes de <form> son:
actionmethod
Ejemplo
<form action="/enviar" method="post">
...
</form>
Qué indica cada uno
action
Señala a qué dirección se enviarán los datos del formulario.
method
Indica cómo se enviarán esos datos.
Los valores más comunes son get y post.
Diferencia general entre GET y POST
GET
Suele enviar los datos en la URL.
Se usa mucho para búsquedas o filtros.
POST
Envía los datos de otra manera y no los deja visibles del mismo modo en la URL.
Se usa más para registros, envíos de formularios y acciones importantes.
En esta instancia alcanza con entender la lógica general. Más adelante, cuando se vea integración con otras tecnologías, se puede profundizar mejor.
La importancia de label
Un error muy común al empezar es crear campos sin etiqueta descriptiva.
Ejemplo flojo
<input type="text" placeholder="Nombre">
Mejor versión
<label for="nombre">Nombre</label>
<input type="text" id="nombre" name="nombre" placeholder="Ingrese su nombre">
Por qué label es importante
le dice claramente al usuario qué debe ingresar;
mejora la accesibilidad;
hace el formulario más comprensible;
vincula el texto con el campo correspondiente.
Regla importante
El valor de for en la etiqueta <label> debe coincidir con el id del campo.
<label for="correo">Correo electrónico</label>
<input type="email" id="correo" name="correo">
La etiqueta <input> y sus tipos más comunes
La etiqueta <input> es una de las más versátiles de HTML. Cambia bastante según el valor de su atributo type.
text
Se usa para texto breve.
<input type="text" id="nombre" name="nombre">
Sirve para nombre, apellido, ciudad, asunto o cualquier dato corto escrito en texto.
email
Se usa para direcciones de correo electrónico.
<input type="email" id="email" name="email">
El navegador ya interpreta que se espera un mail y puede aplicar validaciones básicas.
password
Se usa para contraseñas.
<input type="password" id="clave" name="clave">
number
Se usa para valores numéricos.
<input type="number" id="edad" name="edad">
Puede servir para edad, cantidad, stock o cualquier dato numérico.
date
Se usa para fechas.
<input type="date" id="fecha" name="fecha">
file
Permite subir archivos.
<input type="file" id="archivo" name="archivo">
submit
Se usa para enviar el formulario.
<input type="submit" value="Enviar">
De todos modos, hoy suele preferirse <button> porque da más flexibilidad.
Otros elementos importantes de los formularios
No todo se resuelve con <input>. Hay otros elementos que conviene conocer.
textarea
Se usa para textos más largos.
<label for="mensaje">Mensaje</label>
<textarea id="mensaje" name="mensaje"></textarea>
Es útil para comentarios, observaciones, descripciones o consultas extensas.
No conviene usarlo para datos breves, como nombre o email.
select y option
Se usan cuando el usuario debe elegir entre opciones ya definidas.
<label for="turno">Turno</label>
<select id="turno" name="turno">
<option value="mañana">Mañana</option>
<option value="tarde">Tarde</option>
<option value="noche">Noche</option>
</select>
Esto permite reducir errores, porque el usuario no inventa una respuesta libre cuando la opción ya está delimitada.
Suele servir para elegir turno, provincia, modalidad, categoría o estado.
checkbox
Se usa para opciones independientes que pueden marcarse o no.
<input type="checkbox" id="acepta" name="acepta">
<label for="acepta">Acepto los términos y condiciones</label>
También puede usarse un conjunto de checkboxes cuando se permite seleccionar varias opciones.
<input type="checkbox" id="html" name="intereses" value="html">
<label for="html">HTML</label>
<input type="checkbox" id="css" name="intereses" value="css">
<label for="css">CSS</label>
<input type="checkbox" id="js" name="intereses" value="javascript">
<label for="js">JavaScript</label>
En este caso, el usuario puede marcar una, varias o todas.
radio
Se usa cuando hay varias opciones posibles, pero solo se puede elegir una.
<p>Modalidad</p>
<input type="radio" id="presencial" name="modalidad" value="presencial">
<label for="presencial">Presencial</label>
<input type="radio" id="virtual" name="modalidad" value="virtual">
<label for="virtual">Virtual</label>
Para que el navegador entienda que forman parte de un mismo grupo, los radios deben compartir el mismo atributo name.
button
Se usa para enviar el formulario o para otras acciones.
<button type="submit">Enviar</button>
También puede aparecer como:
<button type="reset">Limpiar</button>
o
<button type="button">Hacer algo</button>
Ese último caso se vuelve más importante cuando aparece JavaScript.
Qué es un atributo
Los atributos aportan información adicional a las etiquetas.
Ejemplo
<input type="text" id="nombre" name="nombre">
En este caso, type, id y name son atributos.
Atributos globales
Los atributos globales son aquellos que pueden usarse en muchísimas etiquetas.
Algunos de los más importantes al comenzar son:
idclasstitlelanghiddenstyletabindex
No hace falta memorizarlos todos de una vez, pero sí comprender bien los más frecuentes.
id
Identifica de manera única un elemento dentro del documento.
<h1 id="titulo-principal">Curso de Front-End</h1>
Sirve para vincular un label con un campo, seleccionar elementos con CSS o JavaScript, y distinguir un elemento puntual.
No conviene repetir el mismo id en varios elementos.
class
Agrupa elementos que comparten una misma categoría o estilo.
<p class="destacado">Este texto es importante.</p>
<p class="destacado">Este también.</p>
A diferencia del id, una clase puede repetirse en muchos elementos.
title
Agrega una información complementaria.
<p title="Información adicional">Pase el mouse por acá</p>
No reemplaza al contenido principal, solo aporta contexto extra.
lang
Indica el idioma del documento o del contenido.
<html lang="es">
Es una buena práctica muy importante, porque ayuda a navegadores, lectores de pantalla y otras herramientas a interpretar correctamente el idioma.
hidden
Permite ocultar un elemento.
<p hidden>Este texto está oculto.</p>
Atributos específicos
No todos los atributos sirven para cualquier etiqueta. Algunos son específicos de ciertos elementos.
href
Se usa en enlaces.
<a href="https://www.ejemplo.com">Ir al sitio</a>
src y alt
Se usan en imágenes.
<img src="foto.jpg" alt="Foto del aula">
action y method
Se usan en formularios.
<form action="/registro" method="post">
type
Es muy común en input y button.
<input type="email">
<button type="submit">Enviar</button>
colspan
Se usa en celdas de tablas.
<td colspan="2">Total</td>
Atributos muy usados en formularios
name
Identifica el dato que se enviará.
<input type="text" name="nombre">
placeholder
Muestra un texto de ayuda dentro del campo.
<input type="text" placeholder="Ingrese su nombre">
required
Indica que el campo es obligatorio.
<input type="email" required>
value
Define un valor inicial.
<input type="text" value="Argentina">
checked
Marca por defecto un checkbox o un radio.
<input type="checkbox" checked>
selected
Marca una opción inicial dentro de un select.
<option value="noche" selected>Noche</option>
Ejemplos completos
Formulario simple de contacto
<form action="/contacto" method="post">
<label for="nombre">Nombre</label>
<input type="text" id="nombre" name="nombre" required>
<label for="email">Correo electrónico</label>
<input type="email" id="email" name="email" required>
<label for="mensaje">Mensaje</label>
<textarea id="mensaje" name="mensaje" rows="5"></textarea>
<button type="submit">Enviar mensaje</button>
</form>
Este ejemplo está bien planteado porque:
usa
form;cada campo tiene su
label;el
forcoincide con elid;se usan tipos adecuados;
los campos importantes están marcados como obligatorios;
el botón es claro.
Formulario de inscripción
<form action="/inscripcion" method="post">
<label for="apellido">Apellido</label>
<input type="text" id="apellido" name="apellido" required>
<label for="nombre">Nombre</label>
<input type="text" id="nombre" name="nombre" required>
<label for="edad">Edad</label>
<input type="number" id="edad" name="edad" min="16" max="100">
<label for="email">Correo</label>
<input type="email" id="email" name="email" required>
<label for="turno">Turno preferido</label>
<select id="turno" name="turno">
<option value="mañana">Mañana</option>
<option value="tarde">Tarde</option>
<option value="noche">Noche</option>
</select>
<p>Modalidad</p>
<input type="radio" id="presencial" name="modalidad" value="presencial">
<label for="presencial">Presencial</label>
<input type="radio" id="virtual" name="modalidad" value="virtual">
<label for="virtual">Virtual</label>
<input type="checkbox" id="acepta" name="acepta" required>
<label for="acepta">Acepto las condiciones de inscripción</label>
<button type="submit">Inscribirme</button>
</form>
En este caso no alcanza con que el formulario “funcione”. También importa si:
está ordenado;
usa bien los tipos de campo;
pide solo lo necesario;
se entiende fácilmente al leerlo.
Tabla de horarios
<table>
<caption>Horarios de cursada del primer cuatrimestre</caption>
<thead>
<tr>
<th>Día</th>
<th>Materia</th>
<th>Horario</th>
<th>Modalidad</th>
</tr>
</thead>
<tbody>
<tr>
<td>Miércoles</td>
<td>Desarrollo Front-End</td>
<td>18:00 a 20:10</td>
<td>Presencial</td>
</tr>
<tr>
<td>Viernes</td>
<td>Modelado y Diseño de Software</td>
<td>18:00 a 20:10</td>
<td>Virtual</td>
</tr>
</tbody>
</table>
Errores frecuentes que conviene evitar
Usar placeholder en lugar de label
Versión floja
<input type="text" placeholder="Nombre">
Mejor versión
<label for="nombre">Nombre</label>
<input type="text" id="nombre" name="nombre" placeholder="Ingrese su nombre">
El placeholder ayuda, pero no reemplaza la función del label.
No usar name en los campos
Incorrecto
<input type="text" id="nombre">
Mejor
<input type="text" id="nombre" name="nombre">
El atributo name es importante porque identifica el dato cuando el formulario se envía.
Usar tablas para maquetar
Enfoque incorrecto
<table>
<tr>
<td>Menú</td>
<td>Contenido principal</td>
</tr>
</table>
Eso no representa datos. Es un intento de diseñar la página con tablas, y para eso no deberían usarse.
Escribir el código desordenado
Poco legible
<form><label for="n">Nombre</label><input type="text" id="n" name="n"><button>Enviar</button></form>
Mucho mejor
<form>
<label for="n">Nombre</label>
<input type="text" id="n" name="n">
<button type="submit">Enviar</button>
</form>
El código prolijo se entiende mejor, se corrige mejor y se mantiene mejor.
Elegir mal el tipo de input
Si se espera un correo, conviene usar type="email".
Si se espera una fecha, conviene usar type="date".
Si se espera una contraseña, conviene usar type="password".
No es un detalle menor. El navegador interpreta mejor el dato esperado y puede ayudar con validaciones o comportamientos más adecuados.
Buenas prácticas generales en HTML
Escribir HTML correctamente no consiste solo en que el navegador muestre algo. También importa cómo está construido el documento.
Conviene tener en cuenta estas prácticas:
usar la etiqueta correcta para cada tipo de contenido;
mantener consistencia en la estructura;
pedir solo la información necesaria en un formulario;
nombrar claramente los atributos;
indentar el código;
separar la estructura del diseño visual.
HTML organiza y da sentido al contenido. CSS se encargará más adelante de la presentación visual. Es importante no mezclar funciones.
Ejercicio de análisis
Código con problemas
<form>
<input type="text" placeholder="Nombre">
<input type="text" placeholder="Correo">
<input type="text" placeholder="Edad">
<button>Enviar</button>
</form>
Qué se puede observar
faltan labels;
el correo debería usar
type="email";la edad podría representarse mejor con
type="number";faltan
idyname;el código funciona de manera muy básica, pero está poco claro y mal resuelto.
Versión mejorada
<form action="/registro" method="post">
<label for="nombre">Nombre</label>
<input type="text" id="nombre" name="nombre" required>
<label for="correo">Correo</label>
<input type="email" id="correo" name="correo" required>
<label for="edad">Edad</label>
<input type="number" id="edad" name="edad">
<button type="submit">Enviar</button>
</form>
Propuestas para seguir practicando
Una buena forma de afianzar esta clase es trabajar con ejercicios que integren varios de los elementos vistos.
Propuesta 1
Crear una página que tenga:
un título principal;
un párrafo introductorio;
una tabla con cursos;
un formulario de inscripción.
Propuesta 2
Armar una tabla de productos con estas columnas:
nombre,
categoría,
precio,
stock.
Propuesta 3
Diseñar un formulario de contacto que incluya:
nombre,
correo,
motivo de consulta,
mensaje,
aceptación de términos.
Propuesta 4
Tomar un formulario mal construido y corregirlo aplicando buenas prácticas.
Ejemplo integrador
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Inscripción a cursos</title>
</head>
<body>
<h1>Inscripción a cursos</h1>
<p>Complete el siguiente formulario para registrarse en una propuesta de cursada.</p>
<table>
<caption>Cursos disponibles</caption>
<thead>
<tr>
<th>Curso</th>
<th>Día</th>
<th>Horario</th>
</tr>
</thead>
<tbody>
<tr>
<td>HTML</td>
<td>Lunes</td>
<td>18:00</td>
</tr>
<tr>
<td>CSS</td>
<td>Miércoles</td>
<td>18:00</td>
</tr>
<tr>
<td>JavaScript</td>
<td>Viernes</td>
<td>18:00</td>
</tr>
</tbody>
</table>
<h2>Formulario de inscripción</h2>
<form action="/inscripcion" method="post">
<label for="apellido">Apellido</label>
<input type="text" id="apellido" name="apellido" required>
<label for="nombre">Nombre</label>
<input type="text" id="nombre" name="nombre" required>
<label for="email">Correo</label>
<input type="email" id="email" name="email" required>
<label for="curso">Curso elegido</label>
<select id="curso" name="curso">
<option value="html">HTML</option>
<option value="css">CSS</option>
<option value="javascript">JavaScript</option>
</select>
<p>Modalidad preferida</p>
<input type="radio" id="presencial" name="modalidad" value="presencial">
<label for="presencial">Presencial</label>
<input type="radio" id="virtual" name="modalidad" value="virtual">
<label for="virtual">Virtual</label>
<label for="comentarios">Comentarios</label>
<textarea id="comentarios" name="comentarios"></textarea>
<input type="checkbox" id="terminos" name="terminos" required>
<label for="terminos">Acepto las condiciones</label>
<button type="submit">Enviar inscripción</button>
</form>
</body>
</html>
Este ejemplo permite practicar varias cosas al mismo tiempo:
la estructura general del documento HTML;
una tabla con
caption,theadytbody;un formulario con distintos tipos de campos;
el uso correcto de
label,idyname;atributos globales y específicos;
orden y legibilidad del código.
Qué conviene haber comprendido al terminar esta clase
Después de trabajar estos contenidos, debería quedar claro:
Sobre tablas
cuándo corresponde usar una tabla;
cómo construir una estructura básica;
qué diferencia hay entre
thytd;para qué sirven
caption,thead,tbodyytfoot;qué hacen
colspanyrowspan.
Sobre formularios
cuál es la función de
form;por qué
labeles importante;qué tipos de
inputson frecuentes;cuándo conviene usar
textarea;cuándo conviene usar
select;qué diferencia hay entre
checkboxyradio;para qué sirve
button.
Sobre atributos
qué es un atributo;
qué diferencia hay entre atributos globales y específicos;
para qué sirven
id,class,name,placeholder,required,href,src,alty otros similares.
Sobre buenas prácticas
por qué importa escribir HTML claro y ordenado;
por qué no deben usarse tablas para diseño;
por qué conviene elegir siempre la etiqueta adecuada;
por qué la semántica y la legibilidad importan desde el comienzo.
Cierre
Esta clase marca un avance importante dentro de la unidad. Hasta ahora HTML venía apareciendo sobre todo como una herramienta para estructurar contenido estático. Con tablas y formularios empezamos a entrar en situaciones mucho más cercanas a la web real.
Una tabla bien construida no solo organiza datos: también comunica estructura.
Un formulario bien resuelto no solo permite escribir: también guía al usuario.
Y un HTML bien escrito no solo funciona: además se entiende, se corrige y se puede ampliar sin volverse desordenado.
Aprender HTML no consiste en memorizar muchas etiquetas sueltas. Lo importante es desarrollar criterio para pensar qué se quiere representar, qué etiqueta corresponde en cada caso y cómo escribirlo de manera clara, ordenada y consistente.