На проектах с высоким уровнем легаси часто сталкиваюсь с такой проблемой:
Нет типов у переменных, свойств, параметров, возвращаемых значений.
Это приводит к тому что видишь в коде какой-нибудь $someStrangeId
и понятия не имеешь, строка это, boolean или число.
Особенно если оно проверяется вообще каким-нибудь
if ($someStrangeId) { ... }
Иногда приходится даже делать
var_dump($someStrangeId);
die();
только чтобы выяснить что там внутри.
Сидишь потом раскапываешь вверх по всем использованиям, вызовам методов, обратным инжинирингом докапываясь до сути происходящего и теряешь на этом кучу времени.
Чтобы подобные проблемы уменьшались со временем, лучше всего начать указывать типы в обязательном порядке в новом коде и по возможности в старом.
Указываем типы:
- Указываем типы для переменных, если тип не определяется IDE из окружающего кода
- Указываем типы для параметров
- Указываем типы возвращаемых значений
- Указываем типы для свойств классов и моделей
- Не используем
mixed
— определите, какой тип вам нужен и используйте его - Если тип можно описать то он должен быть описан
- Указываем тип явно, если это невозможно то используем PhpDoc