Новое в журнале. Маленькие pull request: почему их быстрее ревьюят и как резать задачу

Пишем о стеке, с которым вы работаете каждый день

Все статьи
PHPNeovim
VimPostgreSQL
Gitnginx
MySQLTypeScript
DockerJavaScript
Linux
Разборы

Читайте, проверяйте и применяйте в одном журнале

Подробнее

Код до и после

Показываем проблему на реальном фрагменте и переписываем его построчно. Удалённое зачёркнуто, добавленное подсвечено.

PHP 8.4
// 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);}

Компромиссы в таблицах

Не «правильно или нет», а цена каждого варианта.

ПодходЧитатьМенять
Копиялегкодорого
Абстракциясложнеедёшево
Функциялегкодёшево

Чек-лист в конце

Короткий список, который можно приложить к пул-реквесту.

  • Логика в одном месте
  • Тесты на оба сценария
  • Нет новых предупреждений

Уровень сложности

Сразу видно, кому статья: новичкам, практикам или опытным.

НовичкамПрактикамПродвинутым

Ответы на частые вопросы

Три-шесть вопросов в конце каждого разбора.

Когда дублирование лучше?

Когда два куска кода похожи случайно и будут меняться по разным причинам.

Что проверять на ревью?

Одну причину для изменения в каждом новом классе.

Иллюстрация к каждой теме

Например, гексагональная архитектура в PHP.

Практикум

Ревью, логи и релизы без лишней драмы

Подробнее

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

Ревью: оплата заказа 2 из 3

Описание задачиесть
Тесты на оба способа оплатыесть
Дублирование расчётаубрать
Чек-лист ревью

Один большой или три маленьких пример

Миграция схемыотдельно
Новый сервисотдельно
Переключение на сервисза флагом
Разбор про размер PR

Перед релизом чек-лист

CSRF-токены в формахпроверить
Заголовок Content-Security-Policyпроверить
Секреты в репозиторииубрать
Чек-лист безопасности
Инструменты

Или соберите рабочее место из проверенных инструментов

Все инструменты

Базы данных из консоли

Автодополнение запросов, подсветка и разбор EXPLAIN, когда запрос вдруг стал медленным.

Следим за PHP от версии 7.0 до 8.5, чтобы ваши миграции были скучными.

Декабрь 2015

PHP 7.0

Скалярные типы аргументов и типы возврата.

Читать разбор
Декабрь 2016

PHP 7.1

Nullable-типы, void и iterable.

Читать разбор
Ноябрь 2017

PHP 7.2

Тип object, Argon2, устаревшие each() и create_function().

Читать разбор
Декабрь 2018

PHP 7.3

Гибкий heredoc и висячая запятая в вызовах.

Ноябрь 2019

PHP 7.4

Типизированные свойства и стрелочные функции.

Читать разбор
Ноябрь 2020

PHP 8.0

Union-типы, именованные аргументы, match и JIT.

Ноябрь 2021

PHP 8.1

Перечисления, readonly-свойства и файберы.

Читать разбор
Декабрь 2022

PHP 8.2

Readonly-классы и DNF-типы.

Читать разбор
Ноябрь 2023

PHP 8.3

Типизированные константы классов и json_validate().

Ноябрь 2024

PHP 8.4

Хуки свойств и асимметричная видимость.

Читать разбор
Ноябрь 2025

PHP 8.5

Оператор конвейера |> для цепочек вызовов.

Принципы, заложенные в каждый текст

Подробнее
Открытый блокнот с набросками и две стеклянные сферы
  • Проверяем код

    Примеры запускаем на актуальных версиях: PHP 8.3 и 8.4, свежие Vim и Neovim, Git 2.4x.

  • Без рекламы

    Не публикуем платные обзоры и партнёрские подборки. Рекомендуем только то, чем пользуемся сами.

  • Обновляем старое

    Когда меняются версии и практики, переписываем разборы, а не оставляем устаревший совет.

Код, который не стыдно передать

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

Случайный разбор