En programación informática, el código repetitivo, en ingles su concepto viene del boilerplate termino que viene desde la impresión del periódico, son secciones de código que se repiten en múltiples lugares con poca o ninguna variación. Al usar lenguajes considerados verbosos, el programador debe escribir mucho código repetitivo para lograr solo una funcionalidad menor.

La necesidad de código repetitivo se puede reducir mediante mecanismos de alto nivel como la metaprogramación (que hace que la computadora escriba automáticamente el código repetitivo necesario o lo inserte en el momento de la compilación ), la convención sobre configuración (que brinda buenos valores predeterminados, lo que reduce la necesidad de especificar detalles del programa en cada proyecto) y la ingeniería basada en modelos (que utiliza modelos y generadores de modelo a código, lo que elimina la necesidad de código repetitivo manual).

También es posible trasladar código repetitivo a una clase abstracta para que pueda ser heredado por cualquier número de clases concretas . Otra opción sería trasladarlo a una subrutina para que pueda ser invocado en lugar de ser duplicado.

Origen El término surgió del sector periodístico . Las columnas y otros artículos distribuidos por los sindicatos de impresores se enviaban a los periódicos suscriptores en forma de planchas de impresión preparadas. Debido a su parecido con las planchas metálicas utilizadas en la fabricación de calderas (en ingles boiler), se las conoció como «placas de caldera», y el texto resultante, como «texto de placa de caldera». Dado que las historias distribuidas por las planchas de impresión solían ser « de relleno » en lugar de noticias «serias», el término se convirtió en sinónimo de texto repetitivo y poco original.

Un término relacionado es código de contabilidad, que se refiere al código que no es parte de la lógica empresarial pero que está intercalado con ella para mantener las estructuras de datos actualizadas o manejar aspectos secundarios del programa.

Preámbulo Una forma de texto repetitivo consiste en declaraciones que, si bien no forman parte de la lógica del programa ni de la sintaxis esencial del lenguaje, se añaden al inicio de un archivo fuente de forma personalizada. El siguiente ejemplo de Perl muestra texto repetitivo:#!/usr/bin/env perl use warnings; use strict;La primera línea es un shebang, que identifica el archivo como un script de Perl ejecutable directamente en la línea de comandos en sistemas Unix/Linux. Las otras dos son pragmas que activan las advertencias y el modo estricto, requisitos del estilo de programación de Perl.

El siguiente ejemplo es un código repetitivo del lenguaje de programación C/C++, <code id="mwRA">#include</code> guard .#ifndef MYINTERFACE_H #define MYINTERFACE_H

...

#endifEsto comprueba y configura un indicador global para indicar al compilador si el archivo myinterface.h ya se ha incluido. Dado que la compilación de un módulo puede incluir muchos archivos interdependientes, esto evita procesar el mismo encabezado varias veces (lo que provocaría errores debido a múltiples definiciones con el mismo nombre).

En Java y plataformas similares En los programas Java, las clases DTO suelen incluir métodos para obtener y establecer variables de instancia. Las definiciones de estos métodos suelen considerarse repetitivas. Aunque el código varía de una clase a otra, su estructura es lo suficientemente típica como para que sea mejor generarlo automáticamente que escribirlo manualmente. Por ejemplo, en la siguiente clase Java que representa una mascota, casi todo el código es repetitivo, excepto las declaraciones de Pet, name y owner :

Java public class Pet { private String name; private Person owner;

public Pet(String name, Person owner) { this.name = name; this.owner = owner;

public String getName() { return name;

public void setName(String name) { this.name = name;

public Person getOwner() { return owner;

public void setOwner(Person owner) { this.owner = owner;

}La mayor parte del código repetitivo de este ejemplo existe para cumplir con los requisitos de JavaBeans . Si las variables name y owner se declararan como públicas, los métodos de acceso y mutación no serían necesarios.

En Java 14, se agregaron clases de registro para solucionar este problema.

Para reducir la cantidad de código repetitivo, se han desarrollado muchos marcos, por ejemplo, Lombok para Java. El mismo código que el anterior es generado automáticamente por Lombok usando anotaciones de Java, que es una forma de metaprogramación :@AllArgsConstructor @Getter @Setter public class Pet { private String name; private Person owner; }

Scala En otros lenguajes de programación, es posible lograr lo mismo con menos código repetitivo, siempre que el lenguaje tenga soporte integrado para estas construcciones comunes. Por ejemplo, el equivalente del código Java anterior se puede expresar en Scala con una sola línea de código:case class Pet(var name: String, var owner: Person)

C# O en C# usando propiedades automáticas con campos de respaldo generados por el compilador:public class Pet { public string Name { get; set; } public Person Owner { get; set; } }A partir de C# 9.0 existe la posibilidad de utilizar registros que generan clases con propiedades automáticamente:public record Pet(string Name, Person Owner);

HTML En HTML, el siguiente texto repetitivo se utiliza como una plantilla vacía básica y está presente en la mayoría de las páginas web: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"/> <title>Test</title> </head> <body>

</body> </html>

El estándar HTML Living Standard de WHATWG define que las etiquetas pueden omitirse sin problemas en la mayoría de las circunstancias. La etiqueta es técnicamente redundante cuando proviene directamente de un servidor web configurado para enviar la codificación de caracteres en una cabecera HTTP, aunque resulta útil cuando la respuesta HTML se guarda en un archivo .html, caché o archivo web. La guía de estilo HTML/CSS de Google recomienda omitir todas las etiquetas opcionales, lo que resulta en una mayor reducción de texto repetitivo. El Consorcio World Wide Web establece que el no debe estar vacío: <!DOCTYPE html> <title>Test</title>

Referencias

Categoría:Java Categoría:Software