Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите Рефлексия и с чем ее едят.

Тема в разделе "Разработка плагинов для новичков", создана пользователем Lisenochek, 6 мар 2017.

  1. Автор темы
    Lisenochek

    Lisenochek Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    Всем привет. Решил разобраться с рефлексией, так как планирую выпустить свой первый публичный плагин на просторы помойки интернета. Кто разбирается можете помочь мне разобраться с этим?
     
  2. Хостинг MineCraft
    <
  3. Exception_Prototype

    Exception_Prototype Активный участник Пользователь

    Баллы:
    46
  4. Mr_RoboMan

    Mr_RoboMan Старожил Пользователь

    Баллы:
    123
    А зачем она тебе нужна? Если ты можешь что-то написать без участия рефлексии, это в большинстве случаев означает что она и не нужна..
     
  5. Автор темы
    Lisenochek

    Lisenochek Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    Ну для паблик плагина как раз нужна, если надо писать функционал на пакетах.
     
  6. GoodCoder

    GoodCoder Активный участник Пользователь

    Баллы:
    76
    Для этого Protocollib придумали.
     
  7. AtomicInteger

    AtomicInteger Активный участник Пользователь

    Баллы:
    46
    Рефлексия убивает паблик.
     
  8. Blc_Dragon

    Blc_Dragon Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    почему?
     
  9. OsipXD

    OsipXD Старожил Пользователь

    Баллы:
    173
    Skype:
    osip.fatkullin
    Имя в Minecraft:
    OsipXD
    Почему? [х2]
     
  10. AtomicInteger

    AtomicInteger Активный участник Пользователь

    Баллы:
    46
    Сама по себе рефлексия с одной стороны выручает, когда нужна мультиверсионность.Но я имел в виду то, что плагин, использующий ресурсы, зависимые от версии, это уже не так хорошо, как если бы плагин работал на чистом BukkitAPI.Проблемы с зависимостями решает как раз таки рефлексия.А вот она уже, зачастую, работает в ущерб производительности.Так что я немного неправильно выразился, зло не рефлексия, а то, ради чего мы её используем, хоть и в самом факте её использования есть минусы(производительность):)
     
  11. Ission

    Ission Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    lokivava
    Почему? [х3]
     
  12. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    +1[DOUBLEPOST=1488823099,1488823010][/DOUBLEPOST]А вообще можно рантайм ремап юзать на asm-е. Это не убьет производительность.
     
  13. Blc_Dragon

    Blc_Dragon Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    как по мне, так это ↑, вообще никак не уменьшает желание и необходимость использовать рефлексию.
    да, она кушает производительность, но в чистом ведрышке, зачастую вообще нет нужного нам. а отправка пакетов - снова рефлексия, либо же подключение протоколлиба, что опять же не есть гуд. Так что на счет зла, это еще как посмотреть.

    для себя, проблему с рефлексией решил тем, что все объекты, которые создаются с ее помощью, создаются в onEnable и дальше просто лежат в мапах, сетах и т.д.

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

    AtomicInteger Активный участник Пользователь

    Баллы:
    46
    Я не совсем это имел в виду.Я хотел сказать, что в плагине нужно, по-возможности, избегать компонентов, которые зависят от версии игры, так как это создает некоторые проблемы с дальнейшей поддержкой кода, да и вообще, мороки меньше.Если же от использования таких элементов не уйти, то тут уже приходит на помощь рефлексия, хоть и в ущерб производительности.Но, как выше заметили, для подобных целей иногда можно использовать и другие инструменты.Так же стоит учесть, что если для реализации некоторого функционала необходимо использовать инструменты, которые ценность это функционала не оправдывают, то нужен ли он вообще?Иными словами, для реализации какой-то мелочи используют инструменты, в присутствии которых, общий КПД(если так можно сказать) близиться к нулю, либо даже тянет программу целиком в минус.Так что, стоит подумать, прежде чем создавать подобного рода компоненты программы.
     
  15. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Найди хоть 1 топ сервер без протоколсапорта или виаверсии. Так что протоколлиб там основа и есть у всех. Все там гуд. Другое дело сервера с модами, там не везде можно юзать протоколлиб.
     
  16. AtomicInteger

    AtomicInteger Активный участник Пользователь

    Баллы:
    46
    +1, преимущества протоколлиба сложно переоценить.
     
  17. Qmaks

    Qmaks Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    Qmaks
    Скину свой класс с рефлексией, всегда им пользуюсь и очень удобно.
     
  18. OsipXD

    OsipXD Старожил Пользователь

    Баллы:
    173
    Skype:
    osip.fatkullin
    Имя в Minecraft:
    OsipXD
    Чем он лучше чем инструменты для работы с рефлексией в ProtocolLib'е?
     
  19. Qmaks

    Qmaks Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    Qmaks
    Тем, что протокол либом я не пользовался, а апи довольно гибкое и использовалось оно реально везде.
     
  20. OsipXD

    OsipXD Старожил Пользователь

    Баллы:
    173
    Skype:
    osip.fatkullin
    Имя в Minecraft:
    OsipXD
    В противовес могу сказать, что протоколлибом пользовались сотни людей и никто не жалуется на негибкость. Думаю им тоже реально везде пользовались.
    И второе - протоколлиб стоит практически везде, так что он не сильно обременяет плагин как зависимость.
     
  21. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    +1 А вот левый апи на те же пакеты явно будет лишним. И хочу заметить, замерял скорость получения nbt с итемстака простой рефлексией и протоколлибом, в разы быстрее с прокотолом.
     

Поделиться этой страницей