# 01. Именование и читаемость

[← Оглавление](./index.md)

---

## Осмысленные имена переменных, методов, классов

Избегайте сокращений (кроме общепринятых: id, url, json), однобуквенных имён и абстрактных названий. Имя должно отражать суть сущности или действия.

**ПЛОХО**
```php
function calc($d) {
    $r = [];
    foreach ($d as $x) {
        if ($x['UF_ACTIVE']) {
            $r[] = $x['UF_NAME'];
        }
    }
    return $r;
}
```

**ХОРОШО**
```php
/**
 * Возвращает имена активных клиентов.
 * @param array $clients
 * @return string[]
 */
function getActiveClientNames(array $clients): array {
    $names = [];
    foreach ($clients as $client) {
        if ($client['UF_ACTIVE'] === 'Y') {
            $names[] = $client['UF_FULL_NAME'];
        }
    }
    return $names;
}
```

---

## Единый стиль именования (PSR-12 + Bitrix-соглашения)

| Сущность | Стиль | Пример |
|---|---|---|
| Классы | PascalCase | `ClientService` |
| Методы / функции | camelCase | `getActiveClients()` |
| Константы класса | UPPER_CASE | `MAX_RETRY_COUNT` |
| Свойства | camelCase | `$firstName` |
| Поля ORM Bitrix | snake_case (как в БД) | `STAGE_ID`, `UF_ACTIVE` |

Пользовательские поля `UF_*` — как есть: `UF_FULL_NAME`