Обмен сообщениями/событиями в приложении

Общие вопросы о Unity3D

Re: Обмен сообщениями/событиями в приложении

Сообщение Woolf 04 июл 2013, 18:21

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

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


Ну не сказал бы. По мне, так делегаты только мешают отследить логику работы скрипта. Так что это не "прогрессивные" программисты, а те, которым совсем уж нехрен делать. делегаты нужны, не спорю, и бывают ситуации, когда их применение действительно необходимо и обоснованно, но сувать их куда ни попадя - это уже лишнее. Мало того, что логика путается, так еще и сами себе геморой наживаете в виде повышения вероятности ошибок.
Разработчик theFisherOnline - там, где клюёт
Разработчик Atom Fishing II - Первая 3D MMO про рыбалку
Разработчик Atom Fishing - Рыбалка на поплавок, донку, нахлыст, блесну в постъядерный период.
Аватара пользователя
Woolf
Адепт
 
Сообщения: 7179
Зарегистрирован: 02 мар 2009, 16:59

Re: Обмен сообщениями/событиями в приложении

Сообщение Johnson 04 июл 2013, 18:53

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

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

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

По мне, так делегаты только мешают отследить логику работы скрипта.

Я понимаю, что это личное мнение, но моё мнение несколько другое. Делегаты очень даже удобны и, мне кажется, наоборот помогают в осознании логики работы.
Тут срабатывает правило "Keep it simple" - нужно держать код простым. Плюс, как можно больше однотипных действий следует вынесено в отдельные методы - тоже одна из догм ООП.
Мне их очень не хватало именно в таком виде в джаве.
С выражением "не совать их куда попало" - соглашусь, нужно знать меру. К тому же они все равно несколько медленнее прямых вызовов.

PS: Макс, тебе не вредно будет полистать это.
Последний раз редактировалось Johnson 04 июл 2013, 18:59, всего редактировалось 4 раз(а).
Johnson появился в результате деления на null. Кривокодер-рецидивист. Кусается.
Хорошо, что в больнице хирурги не такие же, как новички на этом форуме. Пришел вытащить гвоздь из руки, а они яйца оттяпали...
ProgrammerNotFoundException on line 0!
Аватара пользователя
Johnson
UNIверсал
 
Сообщения: 447
Зарегистрирован: 09 июн 2013, 16:31
Откуда: Пермь
Skype: Johnson1893
  • Сайт
  • ICQ

Re: Обмен сообщениями/событиями в приложении

Сообщение seaman 04 июл 2013, 18:53

Избавляться от if-ов путем повсеместного внедрения делегатов? Жесть!
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Обмен сообщениями/событиями в приложении

Сообщение Макс 04 июл 2013, 19:20

seaman писал(а):Избавляться от if-ов путем повсеместного внедрения делегатов? Жесть!

Не от всех конечно, но я уже устал писать одно и то же. там выше почитайте, я всё написал, уже не раз, для чего это эффективно.
Макс
UNIверсал
 
Сообщения: 372
Зарегистрирован: 20 июн 2013, 23:05

Re: Обмен сообщениями/событиями в приложении

Сообщение Woolf 04 июл 2013, 19:40

Плюс, как можно больше однотипных действий следует вынесено в отдельные методы - тоже одна из догм ООП.

Т.е. вы считаете, что вместо обычного свича наплодить кучу методов, наплодить кучу ссылок на них, завести хешмап - это упрощение кода? Извините, но это голову свихнуть можно, отслеживая все ваши делегаты.
Разработчик theFisherOnline - там, где клюёт
Разработчик Atom Fishing II - Первая 3D MMO про рыбалку
Разработчик Atom Fishing - Рыбалка на поплавок, донку, нахлыст, блесну в постъядерный период.
Аватара пользователя
Woolf
Адепт
 
Сообщения: 7179
Зарегистрирован: 02 мар 2009, 16:59

Re: Обмен сообщениями/событиями в приложении

Сообщение Макс 04 июл 2013, 19:55

Фига!
Последний раз редактировалось Макс 23 июл 2013, 23:39, всего редактировалось 1 раз.
Макс
UNIверсал
 
Сообщения: 372
Зарегистрирован: 20 июн 2013, 23:05

Re: Обмен сообщениями/событиями в приложении

Сообщение Johnson 04 июл 2013, 20:05

Разве не ясно что свичи и условные операторы - они статичны! Они никуда из рабочего потока не денуться, и условия в них заложеные, переопределить не всегда возможно (а в свиче просто невозможно). Так же нельзя по желанию добавлять или удалять условия.
А с аналогом свича на делегатах, это делается легко. Это всё даёт необычайную гибкость.

Хоть один пример необходимости такой гибкости можешь привести?
Я лично не могу. И ни разу не требовалась такая реализация. Нужен гибкий выбор - это делается несколько по-другому. Да и непредусмотренный заранее выбор - это не всегда хорошо.
Johnson появился в результате деления на null. Кривокодер-рецидивист. Кусается.
Хорошо, что в больнице хирурги не такие же, как новички на этом форуме. Пришел вытащить гвоздь из руки, а они яйца оттяпали...
ProgrammerNotFoundException on line 0!
Аватара пользователя
Johnson
UNIверсал
 
Сообщения: 447
Зарегистрирован: 09 июн 2013, 16:31
Откуда: Пермь
Skype: Johnson1893
  • Сайт
  • ICQ

Re: Обмен сообщениями/событиями в приложении

Сообщение DbIMok 04 июл 2013, 20:16

как обычно происходит обращение к полям/методам монобеха, висящего на каком-то геймобжекте? ищем объект, проверяем, что нашли, получаем монобех, проверяем, что получили, обращаемся и так столько раз, сколько нужно методов/объектов "дернуть". получается многословная каша из спагетти. события позволяют этого избежать (кого нужно подписали, откуда нужно послали). я за разумное использование событий.
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.8k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: Обмен сообщениями/событиями в приложении

Сообщение Johnson 04 июл 2013, 21:11

DbIMok писал(а):как обычно происходит обращение к полям/методам монобеха, висящего на каком-то геймобжекте? ищем объект, проверяем, что нашли, получаем монобех, проверяем, что получили, обращаемся и так столько раз, сколько нужно методов/объектов "дернуть". получается многословная каша из спагетти. события позволяют этого избежать (кого нужно подписали, откуда нужно послали). я за разумное использование событий.

Я тоже за их разумное использование (но не до фанатизма).
А ещё я за кеширование ссылок на объеты и скрипты (при надобности).
Johnson появился в результате деления на null. Кривокодер-рецидивист. Кусается.
Хорошо, что в больнице хирурги не такие же, как новички на этом форуме. Пришел вытащить гвоздь из руки, а они яйца оттяпали...
ProgrammerNotFoundException on line 0!
Аватара пользователя
Johnson
UNIверсал
 
Сообщения: 447
Зарегистрирован: 09 июн 2013, 16:31
Откуда: Пермь
Skype: Johnson1893
  • Сайт
  • ICQ

Re: Обмен сообщениями/событиями в приложении

Сообщение Paul Siberdt 04 июл 2013, 21:14

Дык, сижу и не могу найти применения делегатам, когда все, что нужно и так грамотно хранится манагерами в ссылках. Обращайся - не хочу. :)
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Обмен сообщениями/событиями в приложении

Сообщение Макс 04 июл 2013, 21:51

Фига!
Последний раз редактировалось Макс 23 июл 2013, 23:39, всего редактировалось 1 раз.
Макс
UNIверсал
 
Сообщения: 372
Зарегистрирован: 20 июн 2013, 23:05

Re: Обмен сообщениями/событиями в приложении

Сообщение Johnson 05 июл 2013, 06:33

Макс писал(а):Ну вот пример пришёл на ум - это создание пользовательских наборов функций на лету:

Макросы всю жизнь делались на таблицах, картах или словарях.
Johnson появился в результате деления на null. Кривокодер-рецидивист. Кусается.
Хорошо, что в больнице хирурги не такие же, как новички на этом форуме. Пришел вытащить гвоздь из руки, а они яйца оттяпали...
ProgrammerNotFoundException on line 0!
Аватара пользователя
Johnson
UNIверсал
 
Сообщения: 447
Зарегистрирован: 09 июн 2013, 16:31
Откуда: Пермь
Skype: Johnson1893
  • Сайт
  • ICQ

Re: Обмен сообщениями/событиями в приложении

Сообщение Макс 05 июл 2013, 08:32

Johnson писал(а):
Макс писал(а):Ну вот пример пришёл на ум - это создание пользовательских наборов функций на лету:

Макросы всю жизнь делались на таблицах, картах или словарях.

Ну это уж кто как любит и может. Кстати, в моём способе - словарь. Словарь делегатов.
Макс
UNIверсал
 
Сообщения: 372
Зарегистрирован: 20 июн 2013, 23:05

Re: Обмен сообщениями/событиями в приложении

Сообщение DbIMok 06 июл 2013, 18:21

Paul Siberdt писал(а):все, что нужно и так грамотно хранится манагерами в ссылках.

мессенджер это тот же "манагер". помимо делегатов один и тот же функционал можно реализовать разными способами.
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.8k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: Обмен сообщениями/событиями в приложении

Сообщение broken 25 сен 2013, 21:30

Вот тут небольшое сравнение некоторых менеджеров сообщений
http://forum.unity3d.com/threads/173492-Comparison-of-Unity(C-)-Messaging-Events-Systems
Проекты на Unity3D:
Монополия 3D: http://unity3d.ru/distribution/viewtopic.php?f=10&t=25816
Битва валют 3D (файтинг): http://unity3d.ru/distribution/viewtopic.php?f=17&t=17186
Аватара пользователя
broken
UNITрон
 
Сообщения: 243
Зарегистрирован: 29 мар 2013, 15:00
Откуда: Набережные Челны, Россия
Skype: al.ryazanov

Пред.

Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9