Код, который приятно поддерживать
Инженерный журнал о принципах, инструментах и привычках веб-разработки. Каждый разбор с примером кода и чек-листом.
Принципы и архитектура
Когда правило помогает, а когда мешает.
6 разборовPHP и бэкенд
Типы, миграции и статический анализ.
6 разборовИнструменты
Vim, Git, tmux и консольные клиенты.
7 разборовРост и обучение
Как учиться и расти без выгорания.
6 разборовПрактика и проекты
Кеш, логи, флаги и рефакторинг.
7 разборовРазборы и проверки
Чек-листы ревью и разборы мифов.
7 разборовПишем о стеке, с которым вы работаете каждый день
Все статьиЧитайте, проверяйте и применяйте в одном журнале
ПодробнееКод до и после
Показываем проблему на реальном фрагменте и переписываем его построчно. Удалённое зачёркнуто, добавленное подсвечено.
// CartService.php$total = $price * 0.9; // корзина$total = $price * 0.9; // заказ$total = $this->discount($price); private function discount(int $p): int{ return intdiv($p * 9, 10);}
// UserPolicy.php$active = !empty($u) ? ($u->status === 1 ? true : false) : false;$active = $u?->status === Status::Active; // одна ветка вместо трёх: читается за секундуif (!$active) { throw new AccessDenied();}
// Totals.phpdeclare(strict_types=1); function total($items)function total(array $items): int{ return array_sum(array_column($items, 'price'));}
Компромиссы в таблицах
Не «правильно или нет», а цена каждого варианта.
Чек-лист в конце
Короткий список, который можно приложить к пул-реквесту.
- Логика в одном месте
- Тесты на оба сценария
- Нет новых предупреждений
Уровень сложности
Сразу видно, кому статья: новичкам, практикам или опытным.
Ответы на частые вопросы
Три-шесть вопросов в конце каждого разбора.
Когда два куска кода похожи случайно и будут меняться по разным причинам.
Одну причину для изменения в каждом новом классе.

Иллюстрация к каждой теме
Например, гексагональная архитектура в PHP.
Ревью, логи и релизы без лишней драмы
ПодробнееПрактика, которую можно применить в ближайшем спринте. Без пересказа документации и обещаний выучить всё за выходные.
Ревью: оплата заказа 2 из 3
Один большой или три маленьких пример
Перед релизом чек-лист
Или соберите рабочее место из проверенных инструментов
Все инструментыРедактор и терминал
Инструменты, которые окупают час настройки за неделю работы. Каждый с готовым конфигом.
Базы данных из консоли
Автодополнение запросов, подсветка и разбор EXPLAIN, когда запрос вдруг стал медленным.
Следим за PHP от версии 7.0 до 8.5, чтобы ваши миграции были скучными.
PHP 7.3
Гибкий heredoc и висячая запятая в вызовах.
PHP 8.0
Union-типы, именованные аргументы, match и JIT.
PHP 8.3
Типизированные константы классов и json_validate().
PHP 8.5
Оператор конвейера |> для цепочек вызовов.
Принципы, заложенные в каждый текст
Подробнее
Проверяем код
Примеры запускаем на актуальных версиях: PHP 8.3 и 8.4, свежие Vim и Neovim, Git 2.4x.
Без рекламы
Не публикуем платные обзоры и партнёрские подборки. Рекомендуем только то, чем пользуемся сами.
Обновляем старое
Когда меняются версии и практики, переписываем разборы, а не оставляем устаревший совет.
Код, который не стыдно передать
Начните с принципов, а дальше двигайтесь по рубрикам. Каждый разбор заканчивается чек-листом.








