Защо ООП е по-добро от функционалното програмиране ТЕХНИЧЕСКИ ВЪПРОСИ Форум за уеб администратори

Вече трети ден измъчвам брашно, AS3, има класове, обекти направо, вече се уморих да драскам код, за да напиша нещо просто. За да покажете името на Pet: Sharik, трябва да създадете пакет, два класа, два конструктора, екземпляр и локална променлива. И напишете нещо като: var current_ > В PHP минах през класове, но се опитах да не ги използвам, винаги имах достатъчно обичайни функции. Първо код, функции по-долу. Първо, в // нарисувах основната структура, незабавно извиквайки функции и създавайки „празни места“ за тях в долната част на скрипта, след което я попълних. И тук, в AS3, не можете да направите крачка без ООП, много допълнителна работа.

Просто не разбирам защо изобщо трябва да трупате такива конструкции, защото всичко може да се направи на функции, без никакви "нови неща./>

Може би нещо погрешно разбирам и ООП наистина е по-добро от функционалното програмиране. Бих искал да разбера, за да не се насилвам да пиша в OOP скърцайки със зъби.

OOP е по-лош от FP за почти всички, с изключение на няколко важни неща - I / O в обектни / процедурни езици е по-естествено, т.к. I/O е присъщо, както и самите езици, императивно; по-естествено е човек да мисли по императивен начин (извършвайки A, след това B, след това C), отколкото по функционален начин, където редът на изпълнение обикновено е неопределен. Формулярите в OOP стил, с променливо състояние, са по-лесни за правене, отколкото да носите цялото голямо състояние със себе си при всяко повикване.

За съжаление на практика повторното използване на код с ООП не работи, именно защото данните, често много сложни, се комбинират с алгоритми за обработката им. И не просто комбинирани, но някои данни са на едно място (обектни полета), други се предават през параметри на метода, третите са глобални, четвъртите са локални + вземаме предвид полиморфизма с наследяване,постоянно променящи се изисквания и резултатът е бъркотия, която е много трудна за използване навсякъде, освен в конкретен проект. ООП е много подробен, всички тези абстрактни фабрики за адаптери в стил Java запълват кода, така че има многократно повече обвиване, отколкото полезен код.

Основното във функционалното програмиране е липсата на странични ефекти във функциите, липсата на глобални променливи данни и в резултат на това всеки набор от входни данни уникално съответства на всеки набор от резултати. Резултатът е, че всяка функция (с изключение на I/O) е алгоритъм, незабавно използваем повторно. И ако функцията се тества върху някакъв набор от входни данни, тя винаги ще работи правилно върху тези данни.