DEV Community

Leonardo Muniz
Leonardo Muniz

Posted on

Nomeação de Variáveis CSS: Boas Práticas e Abordagens

Recentemente, enquanto navegava na internet, como todo bom desenvolvedor front-end, quis "roubar" a paleta de cores de um site. Então, abri o inspetor de elementos para copiar os valores hexadecimais das cores e me deparei com uma surpresa inusitada: as variáveis CSS estavam nomeadas de forma inconsistente.


css inconsistency names
juro, nao è meme.




Como você pode perceber, os valores das variáveis não correspondiam aos seus nomes, o que é um exemplo clássico de "naming inconsistency" (inconsistência de nomenclatura). É crucial evitar isso em sua base de código.

Nomear variáveis CSS é essencial para a organização, legibilidade e manutenção do código em projetos front-end. Apesar de parecer trivial, muitas empresas ainda não adotam um padrão de nomenclatura.

Este artigo explora várias abordagens para a nomeação de variáveis CSS, destacando a importância de escolhas semânticas e práticas consistentes, se voce ainda não sabe como declarar variaveis, eu te aconselho primeiro ler este artigo no MDN Web Docs, e depois voltar pra cá pra gente falar sobre as varias abordagens possiveis.

Índice

Por que Usar Variáveis CSS? 🔗

Segundo CSS Tricks, variáveis CSS (custom properties) proporcionam flexibilidade e poder ao CSS, permitindo a criação de temas dinâmicos e o ajuste de estilos em tempo real. Jonathan Harrell destaca que variáveis CSS são nativas, dinâmicas e podem ser redefinidas dentro de media queries, além de funcionarem em qualquer contexto CSS, seja ele pré-processado ou não.


Vantagens das Variáveis CSS 🔗

  • Reutilização: Permitem o uso consistente de valores em todo o projeto.
  • Manutenção: Facilita a atualização de estilos ao alterar valores em um único lugar.
  • Legibilidade: Nomes significativos tornam o código mais fácil de entender e manter.

Abordagens para Nomear Variáveis CSS 🔗

1. Nomeação Baseada em Cores 🔗
Nomear variáveis CSS com base nas cores é uma abordagem direta. Esta técnica é útil para pequenos projetos ou quando as cores têm um uso limitado, mas deve-se ter cuidado com possíveis problemas de manutenção, estou citando esta abordagem aqui, mas não recomendo usa-la.

:root {
  --blue: #4267b2;
  --indigo: #3b2614;
  --purple: #754218;
  --pink: #f1ece7;
  --red: #b50000;
  --orange: #dc3545;
  --yellow: #f2b300;
  --green: #009733;
}
Enter fullscreen mode Exit fullscreen mode

Vantagens:

Clareza imediata: Facilita a identificação da cor exata.
Simplicidade: Fácil de implementar.

Desvantagens:

Semântica limitada: Não indica o propósito da cor.
Reutilização: Pode ser confuso em projetos maiores com múltiplos contextos de uso.
Manutenção: Alterar uma cor pode quebrar a consistência semântica.

2. Nomeação Semântica 🔗

Nomear variáveis com base no propósito ou contexto de uso melhora a compreensão do código.

:root {
  --primary-color: #4267b2;
  --secondary-color: #3b2614;
  --accent-color: #754218;
  --background-color: #f1ece7;
  --error-color: #b50000;
  --warning-color: #dc3545;
  --info-color: #f2b300;
  --success-color: #009733;
}
Enter fullscreen mode Exit fullscreen mode

Vantagens:

Clareza semântica: Indica o propósito ou contexto da cor.
Facilidade de manutenção: Simples de atualizar e reutilizar.
Suporte a temas: Fácil implementação de temas diferentes.
Consistência: Facilita a colaboração em equipes.

Desvantagens:

Abstração: Pode requerer mais esforço para mapear nomes a cores específicas.
Curva de aprendizado: Pode ser desafiador para novos desenvolvedores.

3. Combinação de Nomes Semânticos e de Cores 🔗

Combina semântica com a descrição da cor, proporcionando clareza e contexto.

:root {
  --primary-blue: #4267b2;
  --secondary-brown: #3b2614;
  --accent-purple: #754218;
  --background-pink: #f1ece7;
  --error-red: #b50000;
  --warning-orange: #dc3545;
  --info-yellow: #f2b300;
  --success-green: #009733;
}
Enter fullscreen mode Exit fullscreen mode

Vantagens:

Detalhamento: Combina clareza imediata com contexto semântico.
Contexto adicional: Facilita a compreensão e manutenção.

Desvantagens:

Verbosidade: Pode resultar em nomes mais longos e verbosos.

4. Nomeação Contextual 🔗

As variáveis são nomeadas de acordo com o contexto de uso.

:root {
  --header-background: #333;
  --header-color: #fff;
  --footer-background: #222;
  --footer-color: #ccc;
}

.header {
  background-color: var(--header-background);
  color: var(--header-color);
}

.footer {
  background-color: var(--footer-background);
  color: var(--footer-color);
}
Enter fullscreen mode Exit fullscreen mode

Vantagens:

Clareza contextual: Facilita a identificação do propósito das variáveis em partes específicas do layout.
Evita conflitos: Útil em grandes projetos com múltiplos componentes.

Desvantagens:

Potencial de repetição: Pode haver redundância de variáveis para diferentes contextos.

5. Nomeação Baseada em Escopo 🔗

As variáveis são nomeadas para refletir o escopo específico onde serão usadas. Isso pode ajudar a evitar conflitos de nomenclatura em grandes projetos.

:root {
  --button-primary-bg: #007bff;
  --button-primary-color: #fff;
  --button-secondary-bg: #6c757d;
  --button-secondary-color: #fff;
}

.button-primary {
  background-color: var(--button-primary-bg);
  color: var(--button-primary-color);
}

.button-secondary {
  background-color: var(--button-secondary-bg);
  color: var(--button-secondary-color);
}
Enter fullscreen mode Exit fullscreen mode

Vantagens:

Evita conflitos: Reduz a chance de colisões de nomes em grandes bases de código.
Escopo claro: Facilita a manutenção e leitura do código.

Desvantagens:

Complexidade: Pode adicionar complexidade ao gerenciar muitos escopos diferentes.

6. Nomeação Baseada em Componentes (Component-based Naming) 🔗

As variáveis são nomeadas de acordo com os componentes específicos da interface. Isso é comum em metodologias como BEM (Block Element Modifier).

:root {
  --card-background: #fff;
  --card-border: 1px solid #ddd;
  --card-title-color: #333;
}

.card {
  background-color: var(--card-background);
  border: var(--card-border);
}

.card-title {
  color: var(--card-title-color);
}
Enter fullscreen mode Exit fullscreen mode

Vantagens:

Clareza de componente: Facilita a identificação das variáveis relacionadas a componentes específicos.
Modularidade: Facilita a reutilização de estilos em diferentes partes do projeto.

Desvantagens:

Manutenção: Pode ser mais difícil manter consistência em projetos muito grandes.

7. Nomeação Baseada em Tipos de Valores (Type-based Naming) 🔗

As variáveis são nomeadas para refletir o tipo de valor que representam. Isso é útil para manter consistência em todo o projeto.

:root {
  --color-primary: #3498db;
  --color-secondary: #2ecc71;
  --font-size-small: 12px;
  --font-size-medium: 16px;
  --font-size-large: 24px;
  --spacing-small: 8px;
  --spacing-medium: 16px;
  --spacing-large: 32px;
}

.text-primary {
  color: var(--color-primary);
}

.text-secondary {
  color: var(--color-secondary);
}

.small-text {
  font-size: var(--font-size-small);
}

.medium-text {
  font-size: var(--font-size-medium);
}

.large-text {
  font-size: var(--font-size-large);
}

.margin-small {
  margin: var(--spacing-small);
}

.margin-medium {
  margin: var(--spacing-medium);
}

.margin-large {
  margin: var(--spacing-large);
}
Enter fullscreen mode Exit fullscreen mode

Vantagens:

Consistência: Facilita a manutenção e leitura ao usar uma convenção clara para tipos de valores.
Modularidade: Facilita a reutilização de variáveis em diferentes contextos.

Desvantagens:

Verbosidade: Pode resultar em nomes longos.

8. Nomeação Baseada em Temas (Theming) 🔗

As variáveis são nomeadas para refletir diferentes temas ou modos (como modo claro e modo escuro).

:root {
  --color-background-light: #ffffff;
  --color-background-dark: #000000;
  --color-text-light: #000000;
  --color-text-dark: #ffffff;
}

.light-theme {
  background-color: var(--color-background-light);
  color: var(--color-text-light);
}

.dark-theme {
  background-color: var(--color-background-dark);
  color: var(--color-text-dark);
}
Enter fullscreen mode Exit fullscreen mode

Vantagens:

Flexibilidade: Facilita a criação e manutenção de diferentes temas visuais.
Consistência: As variáveis podem ser facilmente trocadas para alterar o tema.

Desvantagens:

Complexidade: Gerenciar múltiplos temas pode adicionar complexidade ao projeto.

Ferramentas de Linting para Variáveis CSS 🔗

Ferramentas de linting podem ajudar a garantir que as variáveis sigam convenções de nomenclatura específicas, promovendo consistência no código. Exemplos de ferramentas incluem:

  • Stylelint: Um linter moderno e flexível para CSS que pode ser configurado para verificar a consistência das variáveis.
  • PostCSS: Uma ferramenta que transforma o CSS com plugins, incluindo verificações de variáveis.
  • CSS Linter: Ferramenta específica para garantir o uso correto e consistente de variáveis CSS.

Conclusão 🔗

Essas abordagens e práticas podem ajudar a garantir que o uso de variáveis CSS em seus projetos seja eficiente, organizado e fácil de manter. A escolha da abordagem certa depende das necessidades e da escala do seu projeto, bem como das preferências e práticas da sua equipe de desenvolvimento.

Créditos 🔗

Este artigo foi inspirado por experiências pessoais e estudos em várias fontes de referência, incluindo CSS Tricks e trabalhos de Jonathan Harrell.

Top comments (4)

Collapse
 
lixeletto profile image
Camilo Micheletto

Caraca mano, baita enciclopédia, já salvei aqui como referência de variáveis CSS em português

Collapse
 
leomunizq profile image
Leonardo Muniz

po mano, fico felizao que tu curtiu <3

Collapse
 
dfprata profile image
Dimas

Muito bom. Vou salvar o link.

Collapse
 
leomunizq profile image
Leonardo Muniz

que bom que curtiu <3