Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (12) « Первая ... 4 5 [6] 7 8 ... Последняя » ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> ООП, серебряная ли пуля?
twin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15562
Пользователь №: 6543
На форуме: 8 лет, 2 месяца, 7 дней
Карма: 299

Трезвый :
5 лет, 11 месяцев, 17 дней


Цитата (bestxp @ 1.02.2016 - 14:28)
С# тоже чисто объектный?

Сейчас практически нет мейстримных чисто объектных языков. И это жжжж неспроста.
Цитата (bestxp @ 1.02.2016 - 14:28)
Смолтолк смолтолк и чо?

Почему он затух? И новых чисто объектных нету? Трудно разве это сделать, если еще почти полвека назад уже такой был? Вы возвращаетесь назад, в семидесятые, со своим чистым ООП, хотя вам кажется, что вперед идете.

Это ваше право и ваш выбор. Достойный уважения. Но никак не серебряная пуля. И в целом я не зря пыхтел над статьёй. Акценты сместились, а значит цели я достиг. Вобщем то обсуждать особо больше нечего по теме. Если пооффтопить только. smile.gif


--------------------
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
SlavaFr  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
******

Профиль
Журнал
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1535
Пользователь №: 22453
На форуме: 6 лет, 6 месяцев, 9 дней
Карма: 104




Цитата (twin @ 31.01.2016 - 16:37)

Я считаю, что функциональные тесты важнее юнит-тестов. Функциональные помогают выявить влияние багов на систему, юнит помогают в разработке алгоритмов. Если есть функциональные, то модульные нужны не всегда. Тоько когда ручное тестирование становится нудным и сложным. Ну и как наследство еще хороши. Чтобы последователи были благодарны.  smile.gif .

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

Теперь коротко о тестирование объектов и функций.
Да функции без OOP, можно прекрассно тестировать, но функции давольно ограничены и сведут с ума, если придётся писать собственные функции которые зависят от каких либо переменных, которые не являются параметрами функций. Это заставит применять ссылки на масивы с переменными и превратится в борьбу процедурального программирования, которая была до того, как появились объекты. при мысли, что функция может использовать функции которые надо делать мок, у менявстают от страха волосы на спине biggrin.gif

В конечном итоге процедурально можно справится абсолютно с любой задачей, но гори оно проподом, когда для этог имеются удобства OOP. biggrin.gif


--------------------
↓↓↓↓↓↓↓↓↓↓
ответ может быть здесь
или в mysql_error();
PMПисьмо на e-mail пользователю
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
chee  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Сын полка
Сообщений: 1780
Пользователь №: 38654
На форуме: 2 года, 11 месяцев, 7 дней
Карма: 40




Лол, твин вошел в режим "бебебе ничего нихочу слышать"


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

Мой блог
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15562
Пользователь №: 6543
На форуме: 8 лет, 2 месяца, 7 дней
Карма: 299

Трезвый :
5 лет, 11 месяцев, 17 дней


Цитата (SlavaFr @ 1.02.2016 - 19:02)
В конечном итоге процедурально можно справится абсолютно с любой задачей, но гори оно проподом, когда для этог имеются удобства OOP.

Так обычно говорят люди, которые никогда не видели других языков, кроме PHP. Или привыкли, что нужно както решать проблемы несовершенства языка костылями (в данном случае классами).

Я имею ввиду противопоставление крайностей. Либо ООП, либо процедурка. Это идет из того, что PHP еще только развивается, и не всегда предоставляет адекватные инструменты. Но развивается он не в сторону "всё на ООП", а как раз наоборот. Сейчас попробую объяснить.

Сначала мнение, что класс удобнее функций шло от того, что функции можно было объявить только в глобальной области видимости. Железным аргументом адептов ООП было как раз разграничение областей видимости, дабы уберечся от совпадения имен. Потом появились немспейсы, и этот аргумент потерял смысл.

Вторым аргументом является автозагрузка. В PHP нет механизма автозагрузки функций из файла. Это предлагалось, но было отвергнуто по причине сложности реализации и отсутствию острой необходимости. Размещать одну функцию в отдельном файле в подавляющем большинстве случаев контрпродуктивно.

А теперь с этой точки зрения рассмотрим класс. С точки зрения, что нам понадобился функционал, который помещается в один метод. Какие есть у класса перимущества перед функцией? Автозагрузка? Давайте посмотрим. Сравним:
 $obj = \черт\знает\где\находится\Класс;
echo $obj->method();

и
 include 'черт\знает\где\находится\Функция.php';
echo черт\знает\где\находится\Функция();

В чем сакраментальная разница? Все те же две строчки. Немного больше букв, но это обманчивое впечатление. Да, можно конечно использовать статику, но не всем адептам это нравится, а главное не в этом. А в завуалированном функционале. В автозагрузчике. И если это чистое ООП, то придется задействовать еще один класс - автозагрузки. А если это, как любит выражаться chee, сопутствующие технологии, то целый композер.

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

Всё это справедливо не только в случае с одним методом в классе. А почти всегда, когда используется модель stateless.

Теперь дальше. Предвижу, что скажет Santehnick. Что то вроде этого:
Цитата (Santehnick @ 1.02.2016 - 09:10)
Там хоть что-нибудь можно задекорировать? Или реализацию подменить?
Но это же грубейшее нарушение принципа YAGNI, который как раз адептами ООП и пропогандируется. Так рассуждают люди, которые ставят на ночь два стакана. С водой и пустой. Первый - вдруг захочется пить, а второй - вдруг не захочется.

Теперь вернемся к тому, что такие заблуждения (ООП всегда удобнее процедурки) свойственны в основном PHP программистам. В том же Python очень активно используются вместо классов модули (по месту конечно, не везде). И никого это не коробит. Больше скажу - это очень приветствуется, так как отвечает Дзену Питона.
Цитата
Простое лучше сложного
Плоское лучше вложенного


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



--------------------
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15562
Пользователь №: 6543
На форуме: 8 лет, 2 месяца, 7 дней
Карма: 299

Трезвый :
5 лет, 11 месяцев, 17 дней


И контрольный в голову, как говорится. Ларавель, это откат к прошлому?


--------------------
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
bestxp  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



орангутанг
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2004
Пользователь №: 36605
На форуме: 3 года, 9 месяцев, 22 дня
Карма: 111




Цитата (twin @ 2.02.2016 - 07:28)
И контрольный в голову, как говорится. Ларавель, это откат к прошлому?

функциональные фишки Laravel не сравнивай с процеДУРКОЙ своей)



--------------------
PMПисьмо на e-mail пользователюСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15562
Пользователь №: 6543
На форуме: 8 лет, 2 месяца, 7 дней
Карма: 299

Трезвый :
5 лет, 11 месяцев, 17 дней


Цитата (bestxp @ 2.02.2016 - 07:23)
функциональные фишки Laravel не сравнивай с процеДУРКОЙ своей)


--------------------
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Dezigo  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Indiana Jones
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1001
Пользователь №: 5429
На форуме: 8 лет, 5 месяцев, 16 дней
Карма: 45




1) Процедурный стиль - если нужно написать алгоритм, то для этого класс не надо создавать.
2)ООП - Если писать проект


Цитата
Класс требует больших накладных расходов.

Зато дешевле поддерживать, быстрее и удобней для компании.

Цитата
В ООП функция должна быть обернута в класс.

Это из за нехватки опыта у вас, что означает что Вы вашей работе не когда не работали с проектами у которых только код весит о 800мб, и такой код просто не возможно подержать без ооп - что бы не развалилось всё.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
bestxp  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



орангутанг
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2004
Пользователь №: 36605
На форуме: 3 года, 9 месяцев, 22 дня
Карма: 111




Цитата (Dezigo @ 2.02.2016 - 12:20)
1) Процедурный стиль - если нужно написать алгоритм, то для этого класс не надо создавать.
2)ООП - Если писать проект


Цитата
Класс требует больших накладных расходов.

Зато дешевле поддерживать, быстрее и удобней для компании.

Цитата
В ООП функция должна быть обернута в класс.

Это из за нехватки опыта у вас, что означает что Вы вашей работе не когда не работали с проектами у которых только код весит о 800мб, и такой код просто не возможно подержать без ооп - что бы не развалилось всё.

по большей части согласен

но я знаком был с функциональным проектом на Scala вес исходников там около 200мб

чистая функциональщина, но сложности не вызывало, так как считай некоторые принципы SOLID и GRASP легко укладывались на функциональный код, ну кроме тех которые реализовать нереально в функциональном языке

Принципы Единой ответственности, Закрытый-Открытый, Управления зависимостями так же как связности и связанности, все это давало качественную читаему архитектуру и единый стиль

---
Возьмем PHP и склеем с процеДУРКОЙ, что у нас выходит

Нет единого стиля, мешанина функций и классов там где не надо, только из-за того что лень подумать на архитектурой

Нет строгости в коде что дает возможность говнокодить всегда и везде, у нас же процеДУРКА

Стандартизация и читабельность падает, повышаеться порог вхождения и из этого поддержка проекта становиться необосновано высокой из-за прихоти программиста

---

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




--------------------
PMПисьмо на e-mail пользователюСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
FatCat  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Чеширский кот
******

Профиль
Журнал
Группа: Администратор
Почтальон группы
Сообщений: 5911
Пользователь №: 1
На форуме: 10 лет, 10 месяцев, 3 дня
Карма: 125

Не пью :
22 года, 3 месяца, 4 дня


Цитата (Dezigo @ 2.02.2016 - 11:20)
Зато дешевле поддерживать, быстрее и удобней для компании.

Форматировать текст тоже удобнее в программе майкрософт ворд.


Цитата (Dezigo @ 2.02.2016 - 11:20)
только код весит о 800мб

Если расформатировать в ворде 10 К буковок (заголовки, выделения, отступы, табуляции, списки), а потом сохранить как хтмл - файл будет весить 800 К. Тот же текст, расформатированный вручную, будет весить 20 К.

Рискну предположить, что ты поменял местами причину и следствие: не ООП, потому что 800 мб, а наоборот, 800мб, потому что ООП.


То же и про сопровождение кода.
ХТМЛ-ку после ворда лучше не открывать в текстовом редакторе, там чудовищная каша тегов. Ее нужно открывать вордом же.
Так и код, написанный в ООП, требует сопровождения только в ООП.
И причины одинаковые. В мире вагон секретарш и домохозяек, окончивших курсы "ворд-эксель-интернет", и они пользуются вордом. Верстающих ХТМЛ в редакторе на 2 порядка меньше. В мире вагон программистов, освоивших ООП; программирующих сложые продукты в процедурном стиле на 2 порядка меньше.

Да, мир катится туда, где все форматируют текст в ворде, и программируют в ООП, а лечат больных по EBM. Но пока еще не докатился, еще есть и врачи и программисты, делающие лучше для клиента, а не то, что лучше соответствует стандартам.


--------------------
Бесплатному сыру в дырки не заглядывают...
PMПисьмо на e-mail пользователюICQ
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Oyeme  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Reality is wrong. Dreams are for real
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1677
Пользователь №: 16955
На форуме: 7 лет, 9 месяцев, 15 дней
Карма: 94




Цитата
Если расформатировать в ворде 10 К буковок (заголовки, выделения, отступы, табуляции, списки), а потом сохранить как хтмл - файл будет весить 800 К. Тот же текст, расформатированный вручную, будет весить 20 К.


Есть разница между страничкой Васи Пупкина/простым магазином и системами которые пишутся по 15 лет,в которой поработало сотни программистов.

Не нужно мешать все в кучу.

Если заказ с фриланса то логичей предположить что код не качественный и сделан на быструю руку.Так как время != деньги.
Соотвестенно выбираем процедурный стиль,клепай как хочешь.

Сдал заказ и доволен.


--------------------
Programming: Private lessons via skype £45/h

Частные уроки в Лондоне / удаленно по skype.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Another Reality  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Старик
***

Профиль
Группа: Пользователь
Сообщений: 125
Пользователь №: 41606
На форуме: 1 год, 4 месяца, 24 дня
Карма: 5




Цитата (FatCat @ 2.02.2016 - 13:09)
Да, мир катится туда, где все форматируют текст в ворде, и программируют в ООП, а лечат больных по EBM. Но пока еще не докатился, еще есть и врачи и программисты, делающие лучше для клиента, а не то, что лучше соответствует стандартам.

Вы хотите сказать, что для клиента лучше процедурка чем ООП ?

Есть расчудесный "веб" движок, на Си написан, сверхбыстрый, круче просто не бывает.
Только вот не очень-то люди хотят заказывать разработку на Си , а почему? - Да потому, что это адски долго и адски дорого.

Так вот с процедуркой то же самое. Объектная модель проекта проще, быстрее в разработке и как следствие дешевле. Есть накладные расходы по ресурсам? - Да, есть, но зато есть возможность безболезненно перепаивать части проекта и внедрять новые, с минимальными денежными и временными затратами. Для клиента это куда важнее.

У меня товарищ работает в продуктовой компании. Работают они только над одним проектом, заказчик - западный медиа холдинг. Так вот там в одном проекте используется десяток различных технологий, которые работают как одно целое и регулярно что-то переписывается из одной технологии в другую, добавляется что-то новое и удаляется старое. Работает над этим проектом около 100 человек. Попробуйте реализовать и поддерживать такую тушу процедурно - это просто невозможно, а если и возможно, то 10 лет делаться будет и по деньгам вылезет в миллионы.

Это сообщение отредактировал Another Reality - 2.02.2016 - 16:04
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
bestxp  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



орангутанг
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2004
Пользователь №: 36605
На форуме: 3 года, 9 месяцев, 22 дня
Карма: 111




Another Reality
да и незабудь добавить что когда закончат на процедурке то уже и никому не надо будет этот софт, так как нормальный конкурент уже будет работать и получать деньги с твоих клиентов)


--------------------
PMПисьмо на e-mail пользователюСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Another Reality  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Старик
***

Профиль
Группа: Пользователь
Сообщений: 125
Пользователь №: 41606
На форуме: 1 год, 4 месяца, 24 дня
Карма: 5




Цитата (bestxp @ 2.02.2016 - 16:36)

да и незабудь добавить что когда закончат на процедурке то уже и никому не надо будет этот софт, так как нормальный конкурент уже будет работать и получать деньги с твоих клиентов)

О том и речь, что время - деньги. Надо быстро написать, быстро запустить. Выстрелило - работа идет дальше, не выстрелило - убили и начали новое. Это бизнес и конкуренты не спят.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Santehnick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Абориген
*****

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 231
Пользователь №: 26735
На форуме: 5 лет, 9 месяцев, 3 дня
Карма: 15




Цитата (twin @ 2.02.2016 - 03:27)
Цитата (Santehnick @ 1.02.2016 - 09:10)
Там хоть что-нибудь можно задекорировать? Или реализацию подменить?
Но это же грубейшее нарушение принципа YAGNI, который как раз адептами ООП и пропогандируется.

yagni это отказ от избыточной функциональности, не путайте с абстракцией. Я о том, что следует добавлять контракт (интерфейс/абстрактный класс) в те места приложения, которые с большой вероятностью могут изменяться. Вы пишите для контракта реализацию, которая нужна сейчас, но код, которому нужна эта функциональность зависит от контракта, но не от конкретной реализации. Это дает возможность в будущем расширить компонент паттерном декоратор не нарушая OCP или полностью заменить компонент. А если вы в коде завязываетесь на new Component то должны понимать, что в этой части приложения уже ничего не изменить, не нарушая OCP, так как жестко привязались к одной конкретной реализации.

Это не нарушает yagni принцип. Зато есть другой принцип, который говорит "Код должен зависеть от абстракций, а не от конкретных классов (реализаций)".

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

И наверное не стоит заниматься бахвальством, говоря, что вы написали фреймворк по всем канонам ооп. Это самый обычный код, который пишет каждый, кто освоил ооп синтаксис.
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (12) « Первая ... 4 5 [6] 7 8 ... Последняя » Ответ в темуСоздание новой темыСоздание опроса