Saltar al contenido
José Marin de la Fuente
José Marin de la Fuente
  • Inicio
  • jmdf
    • Consultor Tecnológico
    • En los medios
    • CodePen
    • ebooks
  • Secciones
    • Blog Personal
    • Drones
    • Marketing Digital
    • Mundo 360
    • Redes Sociales
    • Seguridad informática
    • SEO
    • Tecnología y Mundo Digital
    • WebDesigners, WebMasters & Developers
  • My Tools
    • Calendar Link Generator Online
    • WhatsApp Link Generator Online
    • HTML Obfuscator Online
    • JavaScript Obfuscator Online
    • JWT Decoder
    • QR Online Generator
    • WordPress Password Hash Generator
    • String art generator
    • Editor HTML
    • Test – Tabla Schulte
    • Word Counter
    • Generador de mapeo de imagenes
    • Yellow Dots Decoder
  • Proyectos
    • Lectura Veloz | Chrome Extension
    • FocusTasks | Chrome Extension
  • hangar18
  • Contacto
José Marin de la Fuente José Marin de la Fuente
  • Inicio
  • jmdf
    • Consultor Tecnológico
    • En los medios
    • CodePen
    • ebooks
  • Secciones
    • Blog Personal
    • Drones
    • Marketing Digital
    • Mundo 360
    • Redes Sociales
    • Seguridad informática
    • SEO
    • Tecnología y Mundo Digital
    • WebDesigners, WebMasters & Developers
  • My Tools
    • Calendar Link Generator Online
    • WhatsApp Link Generator Online
    • HTML Obfuscator Online
    • JavaScript Obfuscator Online
    • JWT Decoder
    • QR Online Generator
    • WordPress Password Hash Generator
    • String art generator
    • Editor HTML
    • Test – Tabla Schulte
    • Word Counter
    • Generador de mapeo de imagenes
    • Yellow Dots Decoder
  • Proyectos
    • Lectura Veloz | Chrome Extension
    • FocusTasks | Chrome Extension
  • hangar18
  • Contacto
Modo Visual
Redes Sociales

Buscar en el blog

WebDesigners, WebMasters & Developers • 2 min de lectura

¿Qué son las cláusulas de guarda?

29 agosto 2019
clausulas de guarda

Para explicar que son las guard clauses o clausulas de guarda y que beneficios tienen, vamos a poner primero un ejemplo de código en el cual no se usan para ver que problemas tiene y cómo las guard clauses nos pueden ayudar a solucionarlos.

public function divide(int $divider): float
{
	if ($this->getValue() > 0) {
    	if ($divider > 0) {
      		if ( $divider != 1) {
        		return $this->getValue()/$divider;
      		} else {
				return $this->getValue();
	  		}
    	} else {
			throw new Exception('División por cero.');
    	}
  	} else {
    	return 0;
  	}
}

Problemas que nos encontramos en el ejemplo

Indentación excesiva

Al tener varios IFs anidados la indentación se nos va demasiado hacia la derecha dificultando la lectura del código.

Correlación de IF con ELSE

En este ejemplo igual no es demasiado complicado, pero si cada parte del IF y/o ELSE tuviera un poco más de código, nos costaría saber que IF va con que ELSE bajando hasta la correspondiente línea.

Seguir la traza mentalmente

Tal cómo está, nos obligaría al leer la función a seguir la traza y mantener la “pila” de condiciones mentalmente. Llego a la linea 6 porque ni el valor del objeto actual es 0, el divisor es mayor que 0 y distinto de 1.

Las cláusulas de guarda son la solución

public function divide(int $divider): float
{
  	if ($this->getValue() = 0) {
		return 0;
	}
	
	if ($divider == 0) {
		throw new Exception('División por cero.');
	}

	if ($divider == 1) {
		return $this->getValue();
	}

	return $this->getValue()/$divider;
}

Cómo vemos, con las guard clauses vamos comprobando primero una a una todas las condiciones que se deben cumplir antes de hacer lo que la función tiene que hacer, solucionando toso los problemas anteriores, indentación excesiva, no tenemos que saber que IF va con que ELSE, y por último y diría que más importante, no debemos mantener la “pila” de condiciones de la traza mentalmente.

Si es el valor actual del objeto es igual a 0 devuelvo 0, sinó continuo y me “olvido” de esa condición porque ya la he cumplido.

Fuente: https://www.artansoft.com/2017/01/guard-clauses-definicion-beneficios/

 

Comentarios
Compartir este artículo:

Navegación de entradas

Artículo anterior ← 5 excelentes atajos de teclado de Visual Studio Code
Siguiente artículo AMP | Como afectan al SEO, por qué es importante y cómo implementarlo →

Artículos Relacionados

whoishostingthis
WebDesigners, WebMasters & Developers

Cómo saber que hosting usa una página web

7 marzo 2016 • 2 min de lectura
virtualbox
WebDesigners, WebMasters & Developers

Instalar VirtualBox en Backtrack 5

25 septiembre 2012 • 1 min de lectura
WebDesigners, WebMasters & Developers

Entra en vigencia la Ley de Accesibilidad Web en Argentina

6 abril 2013 • 2 min de lectura
advertise width me
Baitdom Domótica para el hogar en Tucumán
Google Street View Trusted Photographer | Tucumán
grupo de desarrolladores tucumanos en Facebook

Entradas recientes

  • JEV AI: El Modelo ‘Sistema 1’ | 193x Más Rápido que los LLM | Análisis Completo
  • Cómo buscar archivos públicos de Google Drive con Google Dorks y proteger tu información
  • Cómo vender productos digitales con Landing Pages, Tiendanube y Meta Ads
  • Métricas de Meta Ads: guía completa para entender CPM, CTR, CPC, CPA, ROAS y optimizar campañas
  • Framework 3Qs en Meta Ads: Diagnóstico de Campañas y Optimización
advertise width me
DEVELOPER TOOLBOX

Mis Herramientas & Utilidades

Colección de utilidades web interactivas para desarrolladores y profesionales.

JWT Decoder POPULAR

Decodifica y verifica tokens JWT

JSON Formatter

Embellece y valida JSON

Base64 Encoder

Codifica y decodifica Base64

Hash Generator

MD5, SHA-256 y más

Regex Tester

Prueba expresiones regulares

CSS Gradients NUEVO

Generador de degradados CSS

© 2026 José Marin de la Fuente. Todos los derechos reservados.