Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Что лучше (классы или функции)?
Покинул форум
Сообщений всего: 271
Дата рег-ции: Дек. 2013
Помог: 0 раз(а)
Что лучше (классы или функции), что лучше использовать всегда писал на функциях, а тут друг написал лучше писать на классах, они быстрей работаю так оно или нет заранее спасибо)?
OrmaJever
Отправлено: 15 Июня, 2014 - 18:03:50
Активный участник
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010 Откуда: Чернигов
Помог: 299 раз(а)
Если интересует скорость то функции быстрее, но классы в большинстве случаев удобнее
----- Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
mrKotik
Отправлено: 15 Июня, 2014 - 18:14:34
Посетитель
Покинул форум
Сообщений всего: 271
Дата рег-ции: Дек. 2013
Помог: 0 раз(а)
OrmaJever пишет:
Если интересует скорость то функции быстрее, но классы в большинстве случаев удобнее
А если функции быстрее))) То наверно на них и останусь))
OrmaJever
Отправлено: 15 Июня, 2014 - 18:29:41
Активный участник
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010 Откуда: Чернигов
Помог: 299 раз(а)
<sarcasm>В Си функции ещё быстрее, можно писать на нём</sarcasm>
----- Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
caballero
Отправлено: 15 Июня, 2014 - 18:53:42
Активный участник
Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011 Откуда: Харьков
Помог: 126 раз(а)
Цитата:
А если функции быстрее))) То наверно на них и останусь))
а какая разница быстрее они или нет по сравнению с временем загрузки страницы?
что тебе дадут несколько микросекунд.
Покинул форум
Сообщений всего: 328
Дата рег-ции: Окт. 2013 Откуда: Санкт-Петербург
Помог: 6 раз(а)
Я бы не сравнивал эти 2 разных подхода. Все зависит от задачи.
----- Умные мысли приходят тогда, когда все глупости уже сделаны...
eai
Отправлено: 16 Июня, 2014 - 10:29:59
Частый посетитель
Покинул форум
Сообщений всего: 521
Дата рег-ции: Сент. 2009 Откуда: Петроград
Помог: 10 раз(а)
Это розжиг и повод ля холивара
Делайте как вам удобнее или как требуется для проекта.
Оба пути возможны и работоспособны.
ЗЫ
лично предпочитаю классы, хоть они и чуть медленнее, но фактическое быстродействие упирается в СУБД и не важно классы или функции.
teddy
Отправлено: 16 Июня, 2014 - 12:19:45
Участник
Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013
Помог: 91 раз(а)
Скорость прежде всего зависит не от подхода, а от того, насколько качествен и оптимален сам код. Можно одно и тоже приложение написать и на функциях и с ООП подходом, где ООП окажется быстрее.
У ООП есть масса преимуществ. Обычно эти преимущества ощущаются при попытке спроектировать сложное приложение.
Более того, с использованием ООП подходов, есть много готовых и отлаженных решений, мощные фреймворки и всякие полезные библиотеки. Так же есть множество удобных подходов при проектировании, яркий пример - Шаблоны проектирования, которые как правило заточены под ООП.
Мой тебе совет, сначала просто изучи возможности ООП, узнай, как это работает технически, не вдаваясь в подробности проектирования. Для этого можно воспользоваться официальной документацией: http://www.php.net/manual/ru/language.oop5.php
А когда ты все это изучишь, то будешь готов для понимания удобства ООП подхода. Тогда уже начни изучать шаблоны проектирования и фреймворки. Быстро забудешь про функции. Но учти, потеть придется постоянно
EuGen
Отправлено: 16 Июня, 2014 - 15:55:50
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
teddy пишет:
Шаблоны проектирования, которые как правило заточены под ООП.
Шаблоны проектирования концептуально не имеют ничего общего с ООП. Дело другое, что реализации конкретных шаблонов могут быть сделаны в контексте ООП, а некоторые частные паттерны даже привязаны к этому контексту.
teddy пишет:
Мой тебе совет, сначала просто изучи возможности ООП, узнай, как это работает технически
Технически ООП никак не работает, это лишь подход. Технически работает его реализация в конкретно взятых языке и платформе.
OrmaJever пишет:
Если интересует скорость то функции быстрее, но классы в большинстве случаев удобнее
Если под скоростью имеется ввиду стек вызовов, то расходы ничтожны. Если абстракции - то зависимо от того, что требуется. Правильно спроектированное приложение не будет злоупотреблять абстракциями.
eai пишет:
Делайте как вам удобнее или как требуется для проекта.
Всё же, если это именно "проект" - то без изоляционности объектного подхода практически никуда не двинуться. Поскольку код нужно тестировать. Если это - скрипт на пару десятков строк, который что-нибудь пишет в нужный файл и делается на один раз - то - да, объектный подход вряд ли пригодится
По теме - почитайте про S.O.L.I.D. подход, тестирование кода (особенно про интеграционные тесты (то есть, как с ними работать и как свести их число к минимуму), так как с юнитами и так всё ясно). Классика Макконела тоже пригодится. Ах да, ещё про S.T.U.P.I.D. код тоже пройтись можно. Хороший набор анти-паттернов.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
teddy
Отправлено: 16 Июня, 2014 - 16:43:36
Участник
Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013
Помог: 91 раз(а)
EuGen пишет:
Шаблоны проектирования концептуально не имеют ничего общего с ООП. Дело другое, что реализации конкретных шаблонов могут быть сделаны в контексте ООП, а некоторые частные паттерны даже привязаны к этому контексту.
Да, но в корне мысль одна и та же.
EuGen пишет:
Технически ООП никак не работает, это лишь подход. Технически работает его реализация в конкретно взятых языке и платформе.
Я имел ввиду возможности ООП, пытался донести, что прежде чем гнаться за патернами и фреймворками, надо познакомиться с возможностями, которые предлагает разработчику данный подход.
Надеюсь так я выразился более корректно -)
eai
Отправлено: 16 Июня, 2014 - 16:50:14
Частый посетитель
Покинул форум
Сообщений всего: 521
Дата рег-ции: Сент. 2009 Откуда: Петроград
Помог: 10 раз(а)
EuGen пишет:
Всё же, если это именно "проект" - то без изоляционности объектного подхода практически никуда не двинуться. Поскольку код нужно тестировать. Если это - скрипт на пару десятков строк, который что-нибудь пишет в нужный файл и делается на один раз - то - да, объектный подход вряд ли пригодится
Вконтакте на функциях наляпяли и ниче , не хужее фейсбуку
EuGen
Отправлено: 16 Июня, 2014 - 16:56:37
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
teddy пишет:
Да, но в корне мысль одна и та же.
Вообще - нет. Именно в корне и есть отличие. Потому что конкретный паттерн можно реализовать на каком-нибудь функциональном языке (типа Haskell) - за исключением, быть может, тех паттернов, что проистекают из объектного подхода и связаны с сохранением состояния (но называть их просто "паттернами" в таком случае - некорректно, так как они - всего лишь подкласс паттернов). И ООП здесь ни при чём. ООП - это, грубо выражаясь, "протокол более низкого уровня" по отношению к паттернам.
eai пишет:
Вконтакте на функциях наляпяли и ниче , не хужее фейсбуку
Во-первых, это отдельная история (со своими решениями), во-вторых, ради этого им пришлось.. разработать методику тестирования. И - у них не "наобум" сделана структура. Создано упрощение, но умышленное и направленное.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.