Files
frontend-style-guide/docs/parts/5-code-style.md

75 lines
2.6 KiB
Markdown
Raw Normal View History

2025-07-25 00:11:30 +03:00
---
title: Стиль кода
---
# Стиль кода
## Отступы
Используем 2 пробела для отступов во всём проекте. Не используем табы.
## Кавычки
Используем **одинарные кавычки** для строк в JavaScript/TypeScript, и **двойные кавычки** для атрибутов в JSX/TSX.
**Пример:**
```ts
// JavaScript/TypeScript
const message = 'Привет, мир!';
const name = 'GramPay';
```
```tsx
// JSX/TSX
<input type="text" placeholder="Введите имя" />
<button title="Сохранить">Сохранить</button>
```
## Строгая типизация
всегда указывать типы для пропсов, возвращаемых значений, параметров функций.
## Ранние возвраты
(early return) для повышения читаемости.
## Мемоизация
Старайся оптимизировать код если это возможно.
## Документирование
Документируем ТОЛЬКО ОПИСАНИЕ (функций, компонентов, типов и их полей).
## any, unknown
запрещено использовать без крайней необходимости.
## Классы в TSX
Для стилизации компонентов используем CSS-модули и методологию BEM. Классы подключаются через объект стилей, импортированный из соответствующего `.module.css` файла.
> Объект стилей всегда импортируется с именем `s` (сокращённо от style), а не `styles`.
**Пример:**
```tsx
import s from './my-component.module.css';
export const MyComponent = () => (
<div className={s['my-component']}>
<button className={s['my-component__button']}>Кнопка</button>
<span className={s['my-component__text']}>Текст</span>
<button className={s['my-component__button'] + ' ' + s._active}>
Активная кнопка
</button>
</div>
);
```
- Имя класса всегда берётся из объекта `s`.
- Для модификаторов используется отдельный класс с нижним подчёркиванием (например, `s._active`).
- Не используйте строковые литералы с классами напрямую — только через объект `s`.