Программирование: объектное vs процедурное

Какой подход к программированию вы используете


  • Всего проголосовало
    59
Статус
В этой теме нельзя размещать новые ответы.
Объектное программирование в первую очередь для того чтобы реюзать код... повторно использовать... даже не помня как он там работает.... и не беспокоясь что где то какая то функция или переменная будет пересекаться с чем то...

У мя есть прикольная аналогия....

Два чувака строят дом - один из камня, другой из дерева....

Результат - одинаков - есть где жить....

Но - каменный дом все таки рулез - но зато сколько сил и времени на него ушло... И в любой момент мона и расширить - и пристройку запросто сделать...

Деревянный - тож рулез - быстро, дешево и сердито....

Такой же подход и с ООП и процедурным программированием...
 
Покуда есть такие деволоперы
PHP:
if($i === 0 )
{
$i = 0;
}
, данный спор может только вызывать :D усмешку. Причём в моем коде это также проскакивает.

Возразить мне можно только в том случае, - если вы таскаете за собой багаж из сотни глобальных переменных, как правило попутно получая производные из них в каждой функции. для всех желающих сравнить бескровно можно так:
PHP:
if ( function_exists('memory_get_usage') ) {
echo  memory_get_usage();
}
 
при использовании классов функции никуда не уходят. Они просто идут внутри класса и зовутся методами. В ООП сделаны удобные вещи для манипуляции нужными функциями - напр. объявил сейчас, а начинку добавил позже


туда же. Накатал функцию, протестил - вложил в класс. Нет противоречия.

Вот имеммно - если бы ООП было таким отстоем - то, например, Java бы умерла еще неск. лет назад.

В целом же - если надо написать программу из 100строк - то заморачиваться не стоит, если проект большой - то скорее всего очень быстро возникнет потребность в ООП подходе. Все зависит от задачи - в этом, наверное, и заключается ответ :)
 
Причем тут количество строк, я что-то никак не пойму...
Рефакторинг не помешает и на эти 100 строк. И, тем более, программисты, которые будут обслуживать ваш код в дальнейшем только спасибо скажут.
 
Причем тут количество строк, я что-то никак не пойму...
Рефакторинг не помешает и на эти 100 строк. И, тем более, программисты, которые будут обслуживать ваш код в дальнейшем только спасибо скажут.

Имеется ввиду, что если для себя по мелочам что-то делаешь - тогда можно особо не париться, а если твой код - часть проекта - то преимущества ООП будут перевешивать.
 
Недостатки ООП:
1. Для простых вещей менее удобно (с java имели дело? То ли дело Python)
2. Ошибки в проектировании более болезненно потом аукаются. Если задача действительно сложная (да еще и в процессе написания условия задачи меняются - а так бывает!) то беда.
Иными словами, если задача стабильна и понятна - лучше ООП. Если нет - приимущества ООП теряются - при изменении условий надо перепроектировать объектную модель. Или так: ООП больше подходит для последовательного workflow (этап за этапом) а значит, если на каком-то этапе косяк - надо возвращаться назад. Процедурный подход более фриволен.
Если у вас в башке не сформировалась объектная модель вашей задачи - начинать программировать в объектах нельзя. А процедурно - можно уже и начинать, пробовать
не соглашусь.
ООП как раз был придуман для изменчивых задач - типа когда заказчик на переправе лошадей меняет. правда, пока "функциональный" програмер перестроит мозг на ООП так, чтобы ООП начал его спасать в подобных ситуациях, проходит достаточно много времени. по себе знаю.
совет: почитайте про методы экстремального программирования в отношении к ООП.
 
Воды уже набралось на 4 страницы, а все пиз**те, читать устанешь детский лепет. С написанного можно и вовсе бросить программировать.


1ое. любой кто программирует на php(4/5) и использует ООП , в любом случае также использует процедурный подход, поскольку php не является ОО-языком, он всего лишь поддерживает ОО-методы программирования. У всех есть хотя бы одна функция вне класса или вызов функции вне класса, поэтому это уже смешанный подход.

ну и остальное по порядку...

Juri

в общем я так понимаю что выгоднее и правильнее переходить на ооп. да?

Линейный
Процедурный
ООП упрощенный ("логический")
ООП полнофункциональный

Спасибо

Пояснения - что есть что.

Wiki
Линейное программирование — математическая дисциплина, посвященная теории и методам решения задач об экстремумах линейных функций на множествах n-мерного векторного пространства, задаваемых системами линейных уравнений и неравенств.
Линейное программирование является частным случаем математического программирования. Одновременно оно - основа нескольких методов решения задач целочисленного и нелинейного программирования.

Процедурное - собственно без использования классов.

ООП упрощенный ("логический") - загнало в ступор - ни х** не понял, что за ху**я. Откуда такие названия то взяли - хоть бы объяснили что это, может новое веяние какое...

ООП полнофункциональный(лучше будет сказать - "чистый") - это тогда нет ни одного определения или вызова функции вне класса. (что - повторюсь - на пхп невозможно впринципе)


а тема "ООП vs Процедурное"
сродни флеймам "PHP vs ASP", "MySQL vs PostgreSQL", "Windows vs Linux", "Мальчик vs Девочка" =)

примеры не те, но это действительно флуд. тут всего пара постов про описание того или иного метода программирования (кстати можете посмотреть сравнительно новое аспектноориентированное программирование - но у самого руки пока не дошли копнуть зверька)


но заметил что в больших проектах чаще всего используют классы,
- Наверное разработчикам так было более удобно
правильно заметил. и не просто удобнее - это требование бизнеса и по другому никак.

Цитата:
или же что можно при помощи классов чего нельзя при помощи ф-ций.
- Любую задачу можно решить как тем, так и другим способом

это тоже правильно.


Цитата:
хотелось бы что бы кто нибудь доступно объяснил чем классы лучше,
- Ничем! Это просто другой подход к программированию

а вот это - полная чушь.


---------------------------------------------------------
А вот теперь действительно подытожим.
---------------------------------------------------------
Паради́гма программи́рования — это парадигма, определяющая стиль программирования, иначе говоря — некоторый цельный набор идей и рекомендаций, определяющих стиль написания программ.

Парадигма программирования представляет (и определяет) то, как программист видит выполнение программы. Например, в объектно-ориентированном программировании программист рассматривает программу как набор взаимодействующих объектов, тогда как в функциональном программировании(практически тоже, что и процедурное) программа представляется в виде цепочки вычисления функций.

ООП и процедурное программирование лишь пара из многих парадигм =)


Когда пишешь большие проекты, или пишешь каркас для нескольких больших проектов рано или поздно будешь использовать ООП. чем раньше тем проще.
ООП позволяет абстрагироваться от многих рутинных задач, и уделять больше внимания архитектуре всей системы , нежели конкретной реализации функций. При хорошо написанном коде в ООП в последствии гораздо расширять или изменять существующие функции проекта.Все это проходит менее болезненно.
Старайтесь по возможности использовать чистое ООП, чтобы не нарушать целостность системы (когда идете на деловую встречу - вы же не носите на одной ноге кроссовки - потому что в них можно бегать, а на другой ноге ботинок - потому что все таки встреча по бизнесу)

Еще... Если руки не из заднего прохода, ООП может быть ооочень быстрым и нисколько не отставать от процедурного.(Тут надо заметить, что данное утверждение более относится к www-проектам - без указания конкретного языка программирования)


PS. данный пост не относится к людям считающим себя гуру, а также к людям которым по*уй на все это. просто постарался сцедить воду, думаю получилось, хоть и не указал всех свойств того или иного стиля.

за более глубокими разъяснениями пора бы уже в книжку залезть, или мозг включить если не отсырел еще, и все встанет на свои места =)

PPS. я лично приверженец чистого ООП, но ни сколько не против процедурного. использую и то и другое, в зависимости от задачи и языка, и вам того советую.

PPPS. данные тягомотины - вам нужны только если вы хотите программировать профессионально (в этом случае - вы должны знать плюсы и минусы и уменять применять и то и другое) , в противном случае - пишите как можете - а не по*уй ли на чем и как писать. хозяин барин тобишь =)
 
Использую большей частью ООП
очень ускоряет разработку корда используешь уже готовые классы, а их уже так много что для каждой задачи можно по два три.

[SIZE=-1]www.phpclasses.org/[/SIZE]
 
может была уже эта ссылка, просто флуда много. По ссылке много полезного. ;-)
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху