Хуже ООП-а может быть только ООП  < : o)  
Самый главный недостаток такой методики, не в том что у него много кода, а в том что  нутро такой программы вывернуто с ног наголову. Приходится привлекать  специально обученных хУру чтобы они придумали  особенный способ описания боли (архитектура/объектная модель/фреймворк/свой термин)  и избавили  обезьянок от черезмерных страданий. 
Когда поймёте как  запихнуть придумку своей программы  в это прокурустово ложе, тогда может быть  сможете худо бедно использовать методологию ООП. А лучше всего с ООП поможет разобраться ... функциональное программирование, именно разобраться, писать на нём вам не позволит костлявая рука рынка - сдохните с голоду  ;)   После "просветления" вы будете  страдать и есть кактус дальше - добро пожаловать в чудесный мир :D 
почитать 1 почитать 2
//Типо ООП
$user->delete;                              // пользователь сам себя убивает - где здравый смысл  ???
//Типо функция процедурная
delete($user);                               //  функция убийства выполняет операцию над пользователем - уже логичнее
От того что  второй кусок кода криво описывается в выбранном языке для разных типов  аргумента, заставляет нас выбирать на замену процедурщине  ООП,  но  это просто "другая боль", вместо того чтобы выбрать правильный инструмент, мы начинаем бегать по  полю с  граблями покрашенными в другой цвет.
PS. В функциональном программировании, библиотеки и фреймворки   народ в свои программки  цепляет по каждому чиху легко и без сомнений,  а причина одна - в них очень просто разобраться и использовать абсолютно не задумываясь как они устроенны,  вопросов изучения сложности просто не возникает.