[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: ООП, серебряная ли пуля?
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
twin
Холивар рискует переползти на тему тестов. Сразу свое мнение обозначу, дабы не кидались в меня какашками.

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

Но они нихрена не страхуют всю систему от багов. А знчит, при наличии функциональных, их значение тоже немного преувеличено.

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

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

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Another Reality
Цитата (sergeiss @ 31.01.2016 - 20:25)
Маркетолог спрашивает программиста: в чём сложность поддержки большого проекта? Программист: ну представь, что ты писатель и поддерживаешь проект "Война и мир". У тебя ТЗ — написать главу как Наташа Ростова гуляла под дождём по парку. Ты пишешь "шёл дождь", сохраняешь, вылетает сообщение об ошибке "Наташа Ростова умерла, продолжение невозможно". Почему умерла? Начинаешь разбираться. Выясняется, что у Пьера Безухова скользкие туфли, он упал, его пистолет ударился о землю и выстрелил в столб, а пуля от столба срикошетила в Наташу. Что делать? Зарядить пистолет холостыми? Поменять туфли? Решили убрать столб. Получаем сообщение "Поручик ржевский умер." Выясняется, что он в следующей главе облокачивается о столб, которого уже нет...

Ахаха 100% )
Сам на днях перепаивал кое-что - 5 часов жаркого, незабываемого секса с отладчиком. Сутки отходил от этого, не мог к компу прикоснуться biggrin.gif
casper - gg
Цитата (FatCat @ 31.01.2016 - 16:37)
То, что в программировании называется "ООП", в медицине называется "EBM" - эвиденцет-базед медицин - "научно-обоснованная" медицина.
Принцип тот же: если лечащий врач умер во время снятия ЭКГ больному, пришедший на замену врач продолжает снимать ЭКГ, зная, что пульс, АД и температура уже померяны и записаны в историю болезни.
То есть, жесткая неизменяемая последовательность действия.


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

Another Reality
Вставлю и я свои 5 копеек.
ИМХО.

Тут высказывались разные мнения в отношении того, что же такое ООП, - парадигма, методология...
Скажу, что это, в первую очередь - образ мышления разработчика/архитектора.

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

С другой стороны, писать классы тогда, когда нужна функция в 50 строк - тоже бред.
Ron
Цитата (Kusss @ 31.01.2016 - 14:50)
а если так ?

Сама по себе ситуация, когда блок if содержит дофига строк печальная. Тут нужно экстрактить метод или функцию. wink.gif
FatCat
Цитата (Ron @ 31.01.2016 - 21:28)
Аналогия с медициной непонятна.

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

_____________
Бесплатному сыру в дырки не заглядывают...
twin
Цитата (Another Reality @ 31.01.2016 - 18:44)
Я думаю, что все стороны согласятся с тем, что строить архитектуру большой и сложной программы намного проще размышляя сущностями (велосипед - колесо, цепь, руль), нежели действиями (велосипед - вращение колеса, движение цепи, управление ), все таки не зря абстрагирование первый принцип ООП.

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

Но если этих условий нет, программа обречена на рефакторинг сразу же, как только ты нарисовал первый квадратик в UML. И часто, после этого рефакторинга, от первоначальной архитектуры остается шишь да маленько. И никакое DDD тут не поможет. Потому что у заказчиков часто семь пятниц на неделе. Вот пример. Да, согласен. Если посмотреть исходники, а не диаграмы, то может у Маркуса там полный кавардак и отсутствие декомпозиции. Но скажите, чем помог Борису его ООП образ мышления?

Его первоначальный проект был легко расширяем? Отнюдь. На втором же этапе ему пришлось полностью переписать базовый класс. Легче рефакторится? Тоже нет - стоит посмтреть на итог. У Маркуса в итоге все работает, а Борис заблудился в собственном коде. Облегчило поддержку? Сравним первые релизы с последними и подсчитаем количество изменений и потраченное время.

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

Если проектируется конкретный (допустим трековый) велосипед, то да. Колеса, цепь, руль. Но если в процессе разрабоки, когда уже все спроектировано, вдруг выясняется, что велосипед должен быть водным, придется выкинуть колеса и добавить пантоны и винт. И скорее всего на 90% изменить компановку.

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

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

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
twin
И еще, это совершенно непригодно, когда имеется полное отсутствие проектирования.
Вернее оно может когда то и было, лет десять назад. А с тех пор проект постоянно рефакторится, так как он живой, а конкуренты не дремлют.

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

Я это знаю не понаслышке, так как работаю на обслуживании проекта, а не на штамповке "пирожков".

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

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

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
redreem
обычно те, кому мало что приходилось реализовывать, но интересующиеся темой, начинают теоретизировать до неистребимой паранойи.
twin
Цитата (redreem @ 1.02.2016 - 02:40)
обычно те, кому мало что приходилось реализовывать, но интересующиеся темой, начинают теоретизировать до неистребимой паранойи.
Анекдот еще с детства помню
Кто не скаче, той не программист! biggrin.gif

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

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

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
redreem
да-да, типа уместный анекдот. сугубо для самоубеждения smile.gif
Миша
Мужики для таких обсуждений уже давно пора сделать новый раздел.

_____________
Принимаю заказы, писать в ЛС
twin
Цитата (Santehnick @ 1.02.2016 - 06:20)
Вы взяли высокоуровневый язык облегчив себе написание программ. Но тем не менее негативно высказываетесь в отношении фреймворков.

Фреймворки - отдельная тема. Оффтоп. Они, кстати, не только ООП бывают. А выбрал я PHP, как и 90% веб-разработчиков, ровно по той же причине, что сейчас эти 90% выбирают ООП. Мнимая безальтернативность, основанная на пиаре и мегапопулярности. Кстати, преимущества, которые им приписываются, довольно схожи.
Но два раза на одни грабли наступать нет желания. smile.gif
Цитата (Santehnick @ 1.02.2016 - 06:20)
Решаемо, пока у вас 4 функциональных теста. Когда их 4000 и они выполняются несколько часов, может и суток, то вы их перестанете запускать.

Это так, если функциональные тесты запукаются все. А это нужно при вашей архитектуре. При SOA допустим все запускать совсем не обязательно.

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

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

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

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Another Reality
Цитата (twin @ 1.02.2016 - 06:39)
Я это знаю не понаслышке, так как работаю на обслуживании проекта, а не на штамповке "пирожков".

Я тоже говорю не балды.
Небольшой пример, правда не PHP:

Несколько дней назад занимался переделкой программы. Изначально была написана под Windows Forms - адская смесь Document View и MVP, при чем внутри жесткие связи вьюшек с презентерами и различными модулями. По некоторым причинам было решено использовать WPF.

Если бы при написании использовалась процедурка - я бы умер, по сути, пришлось бы все переписывать. А так есть SOLID и жесткие связи меняются на интерфейсные ссылки, несколько манипуляций и программа уже не различает Windows Forms и WPF, и такие досадные различия технологий как маршрутизация событий и т.д. также перестают создавать проблемы. И так далее и тому подобное.

Я не спорю с тем, что различные подходы имеют свои преимущества и недостатки. Однако с моей точки зрения, опираясь на свой личный опыт я предпочитаю ООП.

А что касается приведенного примера про выпечку хлеба, так это, скорее, пример на избыточность. Как раз для борьбы с этим и придуманы такие вещи как DRY, KISS.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.