Manejo de errores en SASS
Este artículo explica el manejo de errores en SASS.
Explicaremos cómo construir diseños de estilos robustos utilizando las funciones de error, advertencia (“warning”) y depuración (“debug”) de SASS.
YouTube Video
Manejo de errores en SASS
¿Qué es el 'manejo de errores' en SASS?
SASS no es un lenguaje que maneje excepciones en tiempo de ejecución, pero sí proporciona un mecanismo para detectar estados no válidos en tiempo de compilación y notificarlo claramente al desarrollador. Esto ayuda a prevenir que valores incorrectos o errores de diseño se conviertan en CSS sin que nadie se dé cuenta.
En SASS, el manejo de errores no es solo 'detener cuando algo falla', sino que también sirve como una forma de expresar suposiciones o premisas de diseño directamente en el código. Principalmente hay cuatro métodos proporcionados para esto.
Detiene inmediatamente la compilación cuando se detecta una condición que el diseño no permite.
Le notifica de problemas mediante advertencias, pero la compilación continúa.
Imprime variables y resultados de cálculos para ayudar a confirmar el flujo de valores y el estado interno.
- Condiciones de protección (
@if) Verifica los valores de entrada y precondiciones con anticipación para evitar problemas antes de que ocurran.
@error: Detiene de manera confiable los errores fatales
Utilice @error para estados que son totalmente inaceptables en su diseño. Si se pasa un valor incorrecto, la compilación falla de inmediato.
1@mixin set-width($width) {
2 @if type-of($width) != number {
3 @error "Width must be a number.";
4 }
5
6 width: $width;
7}- Este mixin detiene la construcción si se le pasa cualquier cosa que no sea un número. Esto es muy efectivo como un 'último recurso' para evitar usos no intencionados.
Uso práctico de @error incluyendo la verificación de unidades
Incluso si es un número, usar la unidad equivocada puede ser problemático. En SASS, puede usar unit() para validar las unidades.
1@mixin set-padding($value) {
2 @if unit($value) != "px" {
3 @error "Padding must be specified in px.";
4 }
5
6 padding: $value;
7}- De esta manera, pasar por error algo como
1remo%puede ser detectado de inmediato. Es importante poder hacer cumplir las reglas de diseño como código.
@warn: Para avisos de obsolescencia y advertencias
@warn se utiliza para notificar sobre condiciones no deseadas que no rompen nada de inmediato. Como el CSS todavía se genera, es adecuado para migraciones graduales.
1@mixin legacy-color($color) {
2 @warn "legacy-color is deprecated. Use theme-color instead.";
3
4 color: $color;
5}- Este mixin emite una advertencia sin romper el código existente. Es especialmente efectivo durante el refactorizado de proyectos grandes.
Patrón para emitir advertencias condicionales
Se vuelve más práctico cuando se combina con la verificación de rangos de valores.
1@mixin set-opacity($value) {
2 @if $value < 0 or $value > 1 {
3 @warn "Opacity should be between 0 and 1.";
4 }
5
6 opacity: $value;
7}- Puede notificar sobre errores de diseño sin detener el desarrollo. La fortaleza de
@warnes que puede elegir el 'nivel de severidad'.
@debug: Visualizar el flujo de valores
@debug es más una herramienta de observación para identificar problemas que un mecanismo de manejo de errores. Puede verificar los resultados de cálculos y el contenido de las variables.
1$base-size: 8px;
2$spacing: $base-size * 3;
3
4@debug $spacing;- Como los valores se imprimen en tiempo de compilación, ayuda a verificar la lógica de cálculos compleja. No lo deje en el código de producción; limite su uso solo para fines de investigación.
El diseño de protección usando @if es lo más importante
En la práctica, diseñar para validar las entradas de antemano es lo más importante—antes de recurrir a @error o @warn.
1@mixin grid-columns($count) {
2 @if type-of($count) != number or $count <= 0 {
3 @error "Column count must be a positive number.";
4 }
5
6 grid-template-columns: repeat($count, 1fr);
7}- Al declarar explícitamente 'precondiciones correctas' como esta, sus mixins y funciones se vuelven auto-explicativos.
Manejo de errores en funciones (@function)
Puede manejar errores de la misma manera dentro de las funciones. Esto es especialmente importante en la lógica de cálculos.
1@function divide($a, $b) {
2 @if $b == 0 {
3 @error "Division by zero is not allowed.";
4 }
5
6 @return $a / $b;
7}- Como puede detectar lógica rota antes de que se genere el CSS, se mejora la seguridad de su sistema de diseño.
Guía para su uso en la práctica
Por último, resumamos los criterios para elegir entre estas opciones, centrándonos en los puntos que a menudo son difíciles de decidir en la práctica.
-
Cuando se determina claramente que hay una infracción de diseño o un error Use
@error. Como generar CSS en un estado incorrecto conduce directamente a errores, la compilación se detiene inmediatamente. -
Cuando quiera notificar sobre obsolescencia o solo dar una advertencia Use
@warn. Puede continuar operando sin romper el código existente o el código en migración, a la vez que informa sobre problemas futuros. -
Cuando quiera confirmar el flujo de valores o resultados de cálculos Use
@debug. Es efectivo como medio temporal para verificar lógica o investigar causas. -
Cuando quiera validar todas las precondiciones, como los valores de entrada o las condiciones de uso Utilice protecciones con
@if. Al establecer explícitamente las suposiciones, puede prevenir problemas antes de que ocurran.
Debido a que SASS es un lenguaje donde 'se puede escribir prácticamente cualquier cosa', un diseño que define claramente los estados no deseados en código lleva a estilos más mantenibles y menos propensos a errores a largo plazo.
Resumen
El manejo de errores en SASS es un mecanismo para expresar claramente y hacer cumplir continuamente las suposiciones y reglas del diseño de estilos en el código.
- Los errores existen para que los estados no válidos no pasen desapercibidos y puedan ser detenidos de forma confiable en el momento.
- Las advertencias (“warnings”) sirven como guía para realizar cambios o migraciones futuras de manera segura sin romper nada de inmediato.
- Las protecciones están destinadas a diseñar de modo que los problemas no ocurran en primer lugar, en lugar de manejarlos después de que sucedan.
Al comprender y utilizar adecuadamente estas herramientas, SASS se convierte no solo en una extensión de CSS sino en un lenguaje de diseño altamente confiable, capaz de expresar intenciones y restricciones.
Puedes seguir el artículo anterior utilizando Visual Studio Code en nuestro canal de YouTube. Por favor, también revisa nuestro canal de YouTube.