Tratamento de Erros no SASS
Este artigo explica o tratamento de erros no SASS.
Vamos explicar como criar designs de estilos robustos utilizando os recursos de erro, aviso e depuração do SASS.
YouTube Video
Tratamento de Erros no SASS
O que é 'Tratamento de Erros' no SASS?
O SASS não é uma linguagem que lida com exceções em tempo de execução, mas oferece um mecanismo para detectar estados inválidos em tempo de compilação e notificar claramente o desenvolvedor. Isso ajuda a evitar que valores incorretos ou erros de design sejam gerados no CSS sem que ninguém perceba.
No SASS, o tratamento de erros não é apenas 'parar quando algo falha', mas também serve como uma forma de expressar suposições de design diretamente no código. Existem principalmente quatro métodos disponíveis para isso.
Interrompe imediatamente a compilação ao detectar uma condição que não é permitida pelo design.
Notifica problemas como avisos, mas a compilação continua.
Exibe variáveis e resultados de cálculos para ajudar a confirmar o fluxo de valores e o estado interno.
- Condições de Guarda (
@if) Verifica valores de entrada e pré-condições antecipadamente para evitar problemas antes que ocorram.
@error: Interrompe Erros Graves de Forma Confiável
Utilize @error para estados absolutamente inaceitáveis no seu design. Se um valor incorreto for passado, a compilação falha imediatamente.
1@mixin set-width($width) {
2 @if type-of($width) != number {
3 @error "Width must be a number.";
4 }
5
6 width: $width;
7}- Esse mixin interrompe a compilação se for passado algo que não seja um número. Isso é muito eficaz como uma 'última proteção' para evitar usos indevidos.
Uso Prático do @error Incluindo Verificação de Unidades
Mesmo sendo um número, usar a unidade errada pode ser problemático. No SASS, você pode usar unit() para validar as 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}- Dessa forma, passar algo como
1remou%por engano pode ser detectado imediatamente. É importante que você possa impor regras de design como código.
@warn: Para Avisos de Depreciação e Alertas
@warn é usado para notificar sobre condições indesejáveis que não quebram nada imediatamente. Como o CSS ainda é gerado, é adequado para migrações graduais.
1@mixin legacy-color($color) {
2 @warn "legacy-color is deprecated. Use theme-color instead.";
3
4 color: $color;
5}- Esse mixin emite um aviso sem quebrar o código existente. É especialmente eficaz durante refatorações em projetos grandes.
Padrão para Emitir Avisos Condicionais
Torna-se mais prático quando combinado com verificação de faixa 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}- Você pode notificar sobre erros de design sem interromper o desenvolvimento. A vantagem do
@warné que você pode escolher o 'nível de rigor'.
@debug: Visualize o Fluxo dos Valores
@debug é mais uma ferramenta de observação para identificar problemas do que para tratamento de erros. Você pode verificar resultados de cálculos e conteúdos de variáveis.
1$base-size: 8px;
2$spacing: $base-size * 3;
3
4@debug $spacing;- Como os valores são exibidos no momento da compilação, isso ajuda a verificar lógicas de cálculo complexas. Não deixe no código de produção; restrinja seu uso apenas para fins de investigação.
Criar Guarda com @if É o Mais Importante
Na prática, validar entradas no próprio design de antemão é o mais importante—antes de recorrer ao @error ou @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}- Ao declarar explicitamente 'pré-condições corretas' dessa maneira, seus mixins e funções tornam-se autoexplicativos.
Tratamento de Erros em Funções (@function)
Você pode tratar erros da mesma forma em funções. Isso é especialmente importante em lógicas de cálculo.
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 você pode detectar lógicas quebradas antes do CSS ser gerado, a segurança do seu sistema de design é aprimorada.
Diretrizes para Uso na Prática
Por fim, vamos resumir os critérios para escolher entre eles, focando nos pontos que costumam ser difíceis de decidir na prática.
-
Quando uma violação de design ou bug é claramente determinada Use
@error. Como gerar CSS em um estado incorreto leva a bugs diretamente, a compilação é imediatamente interrompida. -
Quando você quer notificar sobre depreciação ou apenas alertar Use
@warn. Você pode operar sem quebrar o código existente ou em migração, ao mesmo tempo em que informa sobre problemas futuros. -
Quando deseja confirmar o fluxo de valores ou resultados de cálculos Use
@debug. É eficaz como meio temporário para verificar lógica ou investigar causas. -
Quando deseja validar todas as pré-condições, como valores de entrada ou condições de uso Use guardas com
@if. Declarando explicitamente as suposições, você pode evitar problemas antes que aconteçam.
Como o SASS é uma linguagem onde você 'pode escrever praticamente qualquer coisa', um design que define claramente estados indesejados no código resulta em estilos mais fáceis de manter e com menos riscos de erro a longo prazo.
Resumo
O tratamento de erros no SASS é um mecanismo para expressar claramente e impor continuamente suposições e regras de design de estilo no código.
- Os erros existem para que estados inválidos não passem despercebidos e possam ser interrompidos imediatamente.
- Avisos servem como guias para realizar mudanças ou migrações futuras com segurança, sem quebrar nada de imediato.
- Guardas servem para criar o design de forma que os problemas nem cheguem a ocorrer, em vez de tratá-los depois do fato.
Entendendo e utilizando esses mecanismos de forma adequada, o SASS se torna não apenas uma extensão do CSS, mas uma linguagem de design altamente confiável, capaz de expressar intenções e restrições.
Você pode acompanhar o artigo acima usando o Visual Studio Code em nosso canal do YouTube. Por favor, confira também o canal do YouTube.