|
|
|
Всем привет!
Кто пишет с использованием парадигмы ООП, скажите, чем ООП лучше функционального программирования?
Я уже третий день мучаю Мука, AS3, там сходу классы, объекты, я уже зае*ался код строчить, чтобы написать что-нибудь простенькое.
Чтобы вывести на экран Pet's name: Sharik, нужно создать пакет, два класса, два конструктора, экземпляр и локальную переменную. И писать что-нибудь вроде: var current_class = new com.domain.packet.subclass(); очень напрягает, даже с быстрой вставкой из выпадающего списка.
В PHP я проходил классы, но старался их не использовать, мне всегда хватало обычных функций. Сперва код, ниже функции. Сначала в // расписывал основную структуру, сразу вызывая функции и создавая "болванки" для них внизу скрипта, а потом заполнял.
А тут, в AS3 без ООП шагу не ступить, куча лишней работы.
Я просто не понимаю, зачем вообще нужно так нагромождать конструкции, ведь все можно сделать на функциях, без всяких "new what.the.fucking.class.object.is.thisss(new chto.eto.za.ogromnyi.objekt.dlya.prostogo.deistviya())"
Может я чего-то недопонимаю и ООП в самом деле действительно лучше функционального программирования. Хотелось бы понять, чтобы не заставлять себя писать в ООП скрипя зубами.
Спасибо! |
|
|
|
|
|
Выйди на улицу ночью и прокричи "Разработчики AS мудаки!"
После чего вернись домой, сядь за комп и продолжи писать то, что начал. Продолжи писать в ООП стиле, поскольку AS - это ООП ЯП и это факт. |
|
|
|
|
|
Codd писал(а): |
Выйди на улицу ночью и прокричи "Разработчики AS мудаки!"
После чего вернись домой, сядь за комп и продолжи писать то, что начал. Продолжи писать в ООП стиле, поскольку AS - это ООП ЯП и это факт.
|
лучше днем и в офисе разработчиков , не забудь снять на видео = профит на лечение
а по факту - все равно придешь к ООП |
|
|
|
|
|
Для чего то маленького и простенького конечно лучше функциональное подходит! ООП изобрели там, где обычного программирования перестало хватать.. |
|
|
|
|
|
Yabuti, ООП нужно для масштабных разработок и грамотного многократного использования кода, он не лучше, он другой. Те, кто много кодят, однажды объединили структуры данных с функциями про их обработке, вот и получились объекты. А чтобы не лопатить код первоисточника , додумались наследовать и переназначать отдельные методы. Но смысл тот же - ООП следующая ступень эволюции многократного использования кода, когда просто библиотек функций оказалось недостаточно. |
|
|
|
|
|
Путаете функциональное, процедурное и объектно-ориентированное.
ООП хуже ФП практически всем, кроме нескольких важных вещей - I/O в объектных/процедурных языках более естественный, т.к. I/O по своей сути,как и сами эти языки, императивен; для человека думать в императивном стиле (делаем A, затем B, затем C) более естественно, чем в функциональном, где порядок выполнения как правило не определен. Формочки в ООП стиле, с мутабельным стейтом, делать проще, чем таскать весь большой стейт с собой в каждом вызове.
К сожалению, на практике, многократного использования кода с ООП не получается, именно потому, что данные, часто очень сложные, объединены с алгоритмами их обработки. Причем не просто объединены, а одни данные находятся в одном месте (поля объекта), другие передаются через параметры методов, третьи глобальные, четвертые локальные + учитываем полиморфизм с наследованием, постоянно изменяющиеся требования и в результате получается каша, которую нигде кроме как в конкретном проекте использовать очень сложно. ООП очень многословен, все эти абстрактные фабрики абстрактных адаптеров java-стайл замусоривают код так, что обвязки получается в разы больше, чем полезного кода.
Главное в функциональном программировании - отсутствие побочных эффектов у функций, отсутствие глобальных мутабельных данных, и как следствие каждый набор входных данных однозначно соответствует каждому набору результатов. Результат - каждая функция (кроме I/O) это алгоритм, сразу же пригодный для повторного использования. И если функция оттестирована на некотором наборе входных данных - она всегда будет работать правильно на этих данных.
В процедурном, за счет глобальных мутабельных данных, такого соответствия входных и выходных параметров нет. В ООП то же самое, что и в процедурном программировании, т.к. поля объекта мутабельны, только в придачу к глобальным переменным добавляются еще и поля объекта. В ООП/процедурном программированиее функции могут, возвращая одинаковые результаты, менять глобальный стейт по-разному. В результате тестируем метод на одних входных данных, потом другой метод меняет поле объекта, и первый метод перестает работать, хотя в нем самом ничего не менялось. |
|
|
|
|
|
Забыл добавить, чем же процедурное хуже ООП. Хуже прежде всего тем, что стейт приходится таскать через параметры процедур и функций. Но при этом есть еще некий глобальный стейт, который эти функции свободно могут менять. Такой код тяжело тестировать и тяжело использовать, имеем все недостатки и ООП и ФП. |
|
|
|
|
|
|
|