Просмотр поста

.
reaper

Rakovskiy, Явное лучше неявного
Это даёт гарантию того, что приложение будет вести себя так, как ожидается. Без хинтинга баги ловить труднее, да и отладка порой может быть не лёгкой.

Возьмём вот этот код:

class Service {
    public function doSomething() {
    }
}
class ServiceFactory {
    public function createService() {
        return new Service();
    }
}
$factory = new ServiceFactory();
$service = $factory->createService();
$service->doSomething();

Потом я что-то переделал и теперь метод createService возвращает не экземпляр класса Service, а CustomService, у которого нет метода doSomething(); или что ещё хуже, есть, но делает не то, что ожидается.
Допустим, я везде всё переписал, но одно место не заметил. Хорошо, если пишутся тесты, они помогут найти баг, а если их нет, то с большой вероятностью баг возникнет на продакшене. И без тайп-хинтинга этот код будет валидным. А что он будет делать, никому неизвестно.