Повышение эффективности кодирования с соглашениями об именовании CSS

Источник: «Elevate Your Coding Efficiency With CSS Naming Conventions»
Соглашения об именовании CSS улучшают взаимодействие членов команды при работе над проектами, повышают сопровождаемость и масштабируемость проекта, позволяя разработчикам оптимизировать свои рабочие процессы. В этой статье мы погрузимся в мир соглашений об именовании CSS, покажем практические примеры и преимущества, которые они дают в процессе разработки.

В frontend разработке написание чистого и эффективного кода делает программиста лучше. Неважно, идёт ли речь о личном проекте, совместном задании, agile-проекте или тестовом проекте при приёме на работу. Одним из основополагающих разделов, который обычно упускают из виду разработчики, является применение соглашений об именовании CSS, и некоторые из них на собственном опыте убедились в том, насколько страшен плохо написанный CSS-код при отладке и управлении огромными кодовыми базами. Независимо от того, осознаете вы это или нет, во время тестирования кодирования или технических собеседований ваши правила именования передают информацию о ваших методах разработки. Они могут быть использованы для оценки вашего поведения и эффективности. Итак, в этой статье мы расскажем о лучших практиках именования CSS, чтобы вы могли повысить качество своего кода. К концу статьи читатели должны чётко понимать соглашения об именовании CSS и их преимущества, а также будут знакомы с различными соглашениями об именовании стилей. Конечная цель статьи — дать читателям практические советы по использованию этих соглашений, которые они смогут применить в своей работе, чтобы писать более чистый и эффективный код.

Важность чистого и эффективного кодирования при frontend разработке

При работе над frontend частью веб-приложений, как правило, возникает множество требований к стилистике для улучшения привлекательности сайта и создания дружественного и интуитивно понятного пользовательского интерфейса. В процессе разработки существуют различные варианты построения компонентов и применения стилей к веб-странице: это может быть чистый CSS, использование CSS-фреймворка, например TailwindCSS или Bootstrap, или использование библиотеки компонентов пользовательского интерфейса, например Radix UI. Независимо от выбранного варианта разработки возникает необходимость сделать код легко читаемым и сопровождаемым. Это привело к появлению различных концепций в веб-разработке, таких, как компонентно-ориентированная разработка, обзоры кода, Agile-методологии и т.д. Разработка чистого кода является одной из таких практик и направлена на написание легко читаемого и сопровождаемого кода. Это достигается за счёт использования разумных имён, многоразовых компонентов, позволяющих избежать дублирования, и следования лучшим практикам. Соблюдение принципов чистого кода при написании кода может дать следующие преимущества для рабочего процесса приложения:

Понимание соглашений об именовании CSS

В этом разделе мы рассмотрим концепцию соглашений об именовании CSS, преимущества применения и роль в создании чистого и эффективного кода.

Что такое соглашения об именовании CSS

Соглашения — это общепринятая практика, стандартизированное руководство по поведению, определяющее шаги, которым необходимо следовать при принятии решений или разработке проекта для конкретного случая использования. Важность общепринятых конвенций заключается в том, чтобы способствовать их пониманию большим количеством людей. Что же такое соглашение об именовании CSS? Под соглашениями об именовании CSS понимается набор общепризнанных рекомендаций и лучших практик, которые применяются при именовании классов и идентификаторов, используемых для стилей в коде CSS. Согласно этим рекомендациям, имена, присваиваемые классам и идентификаторам, должны быть последовательными и описательными, обеспечивающими определённую организацию или иерархию. Это делает CSS-код удобным для сопровождения и чтения без необходимости в многочисленных комментариях, поясняющих смысл стилевых блоков.

Преимущества использования хорошо определённых соглашений об именовании в кодовых базах

Использование чётко определённых соглашений об именовании классов/идентификаторов CSS даёт следующие преимущества для рабочего процесса:

Принципы именования CSS и лучшие практики

Определив в предыдущем разделе соглашение об именовании CSS, мы обсудим лучшие практики, которых следует придерживаться при структурировании кода, и рекомендации по согласованному именованию классов в CSS.

Руководящие принципы создания осмысленных и согласованных имён классов

Лучшие практики структурирования CSS-кода

Для обеспечения организованности CSS-кода далее приведены лучшие практики/рекомендации, которых следует придерживаться в своей кодовой базе:

Практические примеры использования соглашений об именовании CSS

В этом разделе рассматриваются различные существующие на сегодня соглашения об именовании CSS, практическое применение в реальных сценариях, а также примеры их реализации в виде фрагментов кода.

БЭМ

БЭМ (блок, элемент, модификатор): БЭМ — это популярное соглашение об именовании CSS, разработанное российской технологической компанией "Яндекс" для обеспечения модульного подхода к CSS-стилистике, многократного использования кода и поддержки крупномасштабных CSS. БЭМ — это аббревиатура от Блок, Элемент и Модификатор, которые представляют собой следующие принципы:

Цель БЭМ — сделать имена классов легко идентифицируемыми с первого взгляда, а также определить, где может использоваться элемент и как он связан с другими элементами. Используя БЭМ, мы также можем указывать, когда элемент является потомком определённого класса, при написании стилей в CSS. Предположим, что класс title является потомком другого класса card, мы можем оформить это так, как показано в приведённом ниже блоке кода:

.card {
/* Стили для блока card */
&__title {
/* Стили для элемента title внутри блока card */
}
}

Префиксы пространства имён

Использование префиксов пространства имён — это соглашение об именовании, которое подразумевает добавление определённого префикса к именам классов для передачи информации об их назначении и использовании в проекте. Это позволяет создать контекст для имён классов и избежать конфликтов именования, поскольку префиксы уникальны по сравнению с другими классами, даже если они имеют схожие имена. Пример реализации использования префиксов пространства имён показан в приведённом ниже блоке кода:

/* Стилизация кнопок cta разделов главной страницы и страницы "О нас" */
.home .cta-button {
background-color: blanchedalmond;
}
.aboutUs .cta-button {
background-color: yellow;
}

Предположим, что у нас есть две кнопки cta на главной странице; это можно решить следующим образом:

<!-- HTML structure -->
<div class="home">
<button class="cta-a-button">Button A</button>
<button class="cta-b-button">Button B</button>
</div>

И для CSS:

/* CSS с префиксами пространств имён */
.home .cta-a-button {
background-color: blanchedalmond;
}
.home .cta-b-button {
background-color: yellow;
}

Atomic CSS

Atomic CSS — это строительный блок, реализованный в большинстве современных библиотек CSS, например, в TailwindCSS. Он предполагает определение небольших блоков одноцелевых классов многократного использования, применяющие определённый стиль или свойство к элементу, к которому они прикреплены. Примеры блоков кода Atomic CSS показаны ниже:

/* Atomic CSS для отзывчивых контейнеров */
.container {
width: 100%;
max-width: 1280px;
margin: 0 auto;
}
.container-sm {
max-width: 768px;
}
/* Atomic CSS классы свойств */
.mt-2 {
margin-top: 8px;
}
.px-2 {
padding-left: 8px;
padding-right: 8px;
}

Затем эти определённые классы могут быть применены к требуемым элементам:

<div class="container px-2"></div>

Atomic CSS также позволяет использовать определённое сокращённое представление для применения стилей к элементам. Оно соответствует приведённому ниже синтаксису:

<!-- Atomic CSS программные сокращения -->.
<!-- syntax:
shortform( property)
property - значение, которое должно быть применено к указанной сокращённой форме
shortform(property):behavior
behavior может быть hover, active, focus и т.д.
shortform(property):behavior--screenSize
screenSize: lg - большой, md - средний и sm - маленький
shortform(property)::pseudo-class
pseudo-classes может быть a - after, b - before, ph - placeholder и т.д.
-->

<!-- Примеры сокращённых форм: D - для display, C - для color и Bg - для background. Их применение показано ниже -->
<div class="D(n)"></div>
<!-- Приведённый выше код устанавливает для display значение none -->
<p class="C(#333)">hello</p>
<!-- Приведённый код устанавливает цвет текста на #333 -->
<div class="Bg(transparent):hover--lg"></div>
<!-- Приведённый код применяет свойство background: transparent; при наведении на div на большом экране -->

SMACSS

(Scalable and Modular Architecture for CSS): SMACSS — это соглашение об именовании CSS, которое обеспечивает простоту сопровождения, поскольку код CSS должен быть разделён на пять основных категорий:

/* Base styles */
body {
font-family: monospace;
}
/* Layout styles */
.header {
color: #fff;
}
/* Module styles */
.button {
padding: 10px 20px;
cursor: pointer;
}
/* State styles */
.form-input:focus {
background-color: #0056b3;
}
/* Theme styles */
.theme-dark {
background-color: #333;
}

Благодаря организации стилей CSS в различные категории кодовые базы CSS становятся более структурированными и легко масштабируются, что положительно сказывается на читабельности и возможности повторного использования кода.

Применение соглашений об именовании CSS в существующих проектах

У вас уже есть существующий проект, который вы хотите масштабировать, а просматривать и сопровождать код становится все сложнее из-за того, что он не соответствует лучшим практикам? Данный раздел призван решить эту проблему, описав шаги по интеграции соглашений об именовании CSS в существующий проект.

Стратегии внедрения соглашений об именовании в текущих проектах

Инструменты и методы рефакторинга существующего CSS-кода

Следующие инструменты/техники помогают в процессе рефакторинга существующего кода:

Заключение

В сфере frontend разработки важность чистого и эффективного кодирования трудно переоценить. В этой статье мы рассмотрели влияние чистого кода на эффективность разработки и удобство сопровождения, а также преимущества написания эффективного CSS-кода. Одним из основных способов достижения чистоты и эффективности CSS является использование чётко определённых соглашений об именовании. Соглашения об именовании CSS играют ключевую роль в организации и структурировании кодовых баз, что позволяет повысить эффективность совместной работы, читаемость кода и удобство сопровождения. Применяя осмысленные и согласованные имена классов, разработчики могут повысить ясность своего кода и улучшить его многократное использование в различных проектах. Разработчиков следует поощрять к тому, чтобы они с самого начала внедряли соглашения об именовании CSS в свои рабочие процессы. Начиная работу с хорошо организованных и продуманно названных классов, команды разработчиков могут опираться на прочный фундамент, уменьшая количество потенциальных ошибок и конфликтов и способствуя формированию целостного стиля кодирования.

Дополнительные материалы

Предыдущая Статья

Использование нескольких баз данных в проекте Laravel

Следующая Статья

Советы по оптимизации производительности Nginx