IT заметки.
Я backend-разработчик в одной аутсорс-компании. Бэк пишу на PHP, использую Laravel.
Заметки носят спонтанный и немного эмоциональный характер, как правило, текст заметки не редактирую
Как правильно разбирать задачи с багами
1. Разберитесь в задаче и воспроизведите ошибку.
Перед тем как что-либо исправлять, внимательно изучите баг и попробуйте воспроизвести его у себя на тестах. Ошибка должна возникать стабильно – это значит, что вы её реально поймали.
2. Сначала тест, потом фикc.
Добавьте тест (или измените существующий), который явно проявляет баг. Для уверенности — убедитесь, что тест падает. Только после этого приступайте к исправлению кода.
3. После фикса тесты должны пройти.
После внесения правки — все старые тесты должны по-прежнему работать, а новый тест, который раньше падал, должен успешно проходить. Это показывает, что баг реально исправлен и другой функционал не сломан.
Такой подход помогает решать баги системно и минимизирует риск добавить новые проблемы.
#bug #разработка #тесты
09:20 23.10.2025г.
Перечитываю Роберта Мартина
Хотелось бы выделить фразу «Поспешай не спеша». Раньше я часто торопился и старался делать всё как можно быстрее, чтобы угодить менеджеру. Но теперь понимаю, что это плохая практика. Я должен бороться за качество кода, не спешить с его написанием, а уделять время продумыванию разных вариантов реализации и выбирать лучший из них.
Такой подход помогает создавать более надёжный, понятный и поддерживаемый код, что в итоге экономит время всей команды и снижает технический долг.
#разработка #самоорганизация
Это очень актуально, недавно завершил проект, в котором пришлось из-за спешки переделывать проверку статусов из-за не оптимального решения.
19:06 14.10.2025г.
Использование генератора в php и yeld
Cмысл генератора и yield — выдавать тебе по одному элементу для работы.
Ты берёшь элемент, работаешь с ним, потом получаешь следующий элемент, а если тебе просто надо собрать всё подряд, то генератор получается и не нужен.
Генератор в PHP позволяет использовать yield для возвращения элементов по одному, не загружая всю коллекцию в память сразу. Это полезно, когда вы работаете с большим количеством данных и хотите минимизировать потребление памяти.
07:46 29.07.2025г.
Почему нельзя менять предыдущие миграции в laravel?
После того как мы залили изменения в ветку development, происходит деплой (доставка) кода приложения на dev сервер. В ходе этой операции выполняется команда php artisan migrate. При выполнении этой команды последовательно исполняются классы миграций, и происходит запись в базу данных об исполнении каждого класса. При последующей доставке приложения на dev сервер, снова выполнится php artisan migrate, и применятся миграции, которые Laravel не нашёл в базе данных.
Кроме того, при изменении существующей миграции существуют случаи, когда такая миграция будет мешать применению последующих миграций, которые были реализованы без учета ваших изменений.
#laravel #migration
12:47 13.07.2025г.
Немного про слои MVC и как они используются в нашем проекте
Хочу разобрать с вами букву "C".
"С" - Контроллер управляет пользовательским вводом, связывает модель и представление, обрабатывая действия пользователя и обновляя интерфейс в ответ на изменения.
У нас в приложение контроллер разбит на части:
- Request
- Controller
Request - это та часть "C", в которой мы проверяем запрос от пользователя:
— есть ли у нас данные, которые запрашивает пользователь,
— доступны ли эти данные пользователю,
— в каком формате должны быть заданы данные
Controller
— готовит данные для использования в нашем приложение, и передаёт в Модель , в которой уже происходит работа с проверенными и подготовленными данными
— связывается Модель (Service - Repository - Model) c представлением (Recources, Reponse и тд)
PS в сервисе не нужно проверять валидность и доступность запрашиваемых данных для полученного запроса.
#mvc #арихтектура
10:08 04.07.2025г.
Ещё немного о тестирование
Набор данных в тестах должен быть максимально приближен к реальным, но и интуитивно понятен для разработчика.
#тесты
14:10 07.06.2025г.
PostgreSQL и foreign ключи
Операция TRUNCATE в СУБД PostgreSQL не обращает внимание на FOREIGN ключи :)
#заметка #субд #PostgreSQL
23:12 28.05.2025г.
Данные, при тестирование
Старайся тестировать с реальными данными, а не просто с набором цифр и букв в поле бд
09:22 05.05.2025г.
Личное мнение про типизацию
Все что не типизировано должно быть типизировано, если даже язык позволяет не типизировать. Строгая типизация всегда лучше.
Лично мне не нравится введенный в PHP тип данных mixed и такие конструкции array|string
Это поможет избежать кучу непредвиденных проблем из-за автотипизиации.
например на PHP в ларавеле я жду от запроса ИНТ прилетает строка "1" и она автоматически становится INT - Такое надо проверять обязательно.
#типизация
09:49 30.04.2025г.
Тезис про тестирование
Мокай в слои как можно ниже уровнем, чем ниже ты сможешь замокать, тем лучше будет тест. #тесты
06:18 26.04.2025г.
Про коммуникацию между командой разработчиков
После согласования задачи лучше всего выдержать время, так как заказчик (менеджер проекта) может придумать новое условие или вспомнить какие-то упущенные нюансы. А ты, как коммуникатор, должен проверить полученную информацию. Я думаю, для небольших изменений в задачах можно выдерживать промежуток в полчаса-час, а вот для больших задач лучше выдерживать до 4 часов. Задача, как вино, со временем становится только лучше.
#таймменеджмент #коммуникация
10:24 24.04.2025г.
Принцип единственной ответственности
После написания функции задавайся вопросом, а у тебя точно функция совершает лишь одно действие и не берет на себя ничего лишнего.
#ревью
22:59 22.04.2025г.
Мысли про типизацию в PHP
Все что не типизировано должно быть типизировано, если даже язык позволяет не типизировать. Строгая типизация всегда лучше.
Лично мне не нравится введенный в PHP тип данных mixed и такие конструкции array|string
Это поможет избежать кучу непредвиденных проблем из-за автотипизиации.
например на PHP в ларавеле я жду от запроса ИНТ прилетает строка "1" и она автоматически становится INT - Такое надо проверять обязательно.
#типизация
22:54 22.04.2025г.