Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 3 4 5 6 7 [8] 9 10 11 12 .. 137   вперед  Ctrl
 Re: Где взять опыт?)  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5183
вадя
Озверин
Рефлексия - медленная, непонятная,
медленная она была лет 15 назад.
тут уже было обсуждение рефлексии и привели одно выступление, в котором на числах развеян миф о медленности рефлексии.
Озверин
ошибки ловятся только в рантайме.
???
Озверин
Нельзя использовать в простых бизнес приложениях.
не слишком ли резкое высказывание?


1. Медленнее, чем стандартный вызов метода. В последний раз я интересовался вопросом в 18 году и она была все еще медленнее..да и думать далеко не надо, оптимизация на уровне jvm практически недоступна из за того, что вся магия происходит только в рантайме

2. Не напишу точный синтаксис, но вызов метода выглядит как то так:

method = Some.class.getMethod("someMethod");


Соответственно, понять, что этот метод НЕ существует на этапе компиляции - невозможно. Я уж не говорю про сигнатуру метода и так далее. Рефакторинг практически недоступен для рефлексии, если имя метода или удаление его(в теории, не знаю как на практике) idea еще может отловить, то изменение сигнатуры метода - хренушки. Отсюда и проблемы при использовании в приложениях больше, чем хело ворлд.

3. Чаще всего в бизнес приложениях нет резона просто использовать. Я вот например за 10 лет не помню ни одного бизнес приложения, где бы разработчики вдруг такие: а давай мы будет использовать рефлексию.
27 мар 19, 11:20    [21844758]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5183
вадя
andreykaT
имхо рефлексия это или ты если делаешь какое то очень дженерик решение архитектурного или там системного уровня, если ты делаешь фреймворк свой, или же если у тебя полная жопа надо пофиксить еще вчера, заткнуть дырку а то всё пропало, и ничего другого в принципе нет что решило бы твою проблему.
ну не надо так критично...
это только твоё мнение.
неужели множество case и if это бест практик?


а рефлексия - единственный выход?:)
27 мар 19, 11:21    [21844760]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
asv79
Member

Откуда: Тверь
Сообщений: 3090
Андрей Панфилов

куда там инкапсулированы SQL-инъекции увы, я понять не в состоянии:

BaseDate.baseRead("update  users set UserName ='" + name + "' where userId=" + chat_id + " ");


пользователь обозвался "'; --" как по вашему, что дальше произойдет? Да фиг с ним, пусть пользователь не какер, а просто у него в имени одинарная кавычка.


К сообщению приложен файл. Размер - 118Kb
27 мар 19, 11:26    [21844765]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
asv79
Member

Откуда: Тверь
Сообщений: 3090
Ну что там оратор ,имя с кавычками прекрасно работает.что такое инкапсуляция освежите в философия java
27 мар 19, 11:27    [21844769]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
andreykaT
Member

Откуда: Finland
Сообщений: 2947
вадя
andreykaT
имхо рефлексия это или ты если делаешь какое то очень дженерик решение архитектурного или там системного уровня, если ты делаешь фреймворк свой, или же если у тебя полная жопа надо пофиксить еще вчера, заткнуть дырку а то всё пропало, и ничего другого в принципе нет что решило бы твою проблему.
ну не надо так критично...
это только твоё мнение.
неужели множество case и if это бест практик?

по кейс и ифам я выше высказался. это статика и ей вообще там не место.
27 мар 19, 11:30    [21844772]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3625
asv79
Ну что там оратор ,имя с кавычками прекрасно работает.что такое инкапсуляция освежите в философия java
Это уже не лечится, тут не в сеньеры метить, а заново в школу идти: вы даже прочесть не в состоянии что вам написали.
27 мар 19, 11:50    [21844809]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5183
Говорили, что взрослый человек...ведет себя как подросток ;) Век живи - век удивляйся.
27 мар 19, 11:51    [21844817]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 17915
Озверин
В последний раз я интересовался вопросом в 18 году и она была все еще медленнее
16488677
Озверин
Медленнее, чем стандартный вызов метода
да, но перебор сотню if и вызов метода в одном из if ?
Озверин
Соответственно, понять, что этот метод НЕ существует на этапе компиляции - невозможно.
это не аргумент для запрета рефлексии.

если есть 3-4 вызова методов - то да рефлексию можно откинуть, но если есть необходимость вызов 50 методов - то портянка if или case - ни есть красиво и читабельно. особенно когда в процессе разработки методы то появляются то удаляются -надо править и в портянке ифов. да компиляция найдёт несоответствие...




Озверин
2. Не напишу точный синтаксис, но вызов метода выглядит как то так:

реально используемый вызов метода с передачей данных
try {
....
            cl = Class.forName(Singleton.ListCommand.get(command_).getClass().getName());

            method = cl.getMethod(command_, java.lang.String.class, Session.class);
            method.invoke(Singleton.ListCommand.get(command_), data_, userSession);
        } catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | ClassNotFoundException ex) {
            ex.printStackTrace();
        }


причем вызываемые методы находятся в различных классах.
ну если метода и не найдётся - исключение можно обработать.
в реалии проблем с "ненайденными методами" не существовало.
Озверин
а рефлексия - единственный выход?:)
всё по конкретной ситуации.
27 мар 19, 11:57    [21844827]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5183
вадя, мне надо просмотреть весь час видео?

Еще раз - нет НИ ОДНОГО резона использовать рефлексию, потому что:
-ошибки отлавливаются только на в рантайме
-она медленная
-от if нужно уходить без помощи рефлексии

 cl = Class.forName(Singleton.ListCommand.get(command_).getClass().getName());

            method = cl.getMethod(command_, java.lang.String.class, Session.class);
            method.invoke(Singleton.ListCommand.get(command_), data_, userSession);


за вот эту вот хрень уволняют. Я не знаю людей, которые бы посмотрели на это в бизнес приложении и сказали, ну да - тут понятно, что написано...и это обосновано. В спринге? Да. В бизнес приложении - нет.
27 мар 19, 12:04    [21844841]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 17915
Озверин
вадя, мне надо просмотреть весь час видео?

не хочешь - не смотри, но тогда не и не утверждай
Озверин
-она медленная


Озверин
за вот эту вот хрень уволняют.
предложи взамен этого что-то лучше, обязательно воспользуюсь.
а так просто пустые слова
27 мар 19, 12:25    [21844893]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
mayton
Member

Откуда: loopback
Сообщений: 47946
Озверин прав вобщемто. Самая главная проблема что рефлексия противоречит ООП.
Грубо говоря правила ООП никак не регламентируют то поведение которое добавляет
эта опция JVM.

Рефлексию можно использовать. Но это использование не должно быть безальтенативным
и команда разработки должна дать зеленый свет на code-review. Тоесть все учасники
разработки должны понять что здесь и как. Технический долг от рефлексии не должен
расти.
27 мар 19, 12:27    [21844898]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
asv79
Member

Откуда: Тверь
Сообщений: 3090
Андрей Панфилов
asv79
Ну что там оратор ,имя с кавычками прекрасно работает.что такое инкапсуляция освежите в философия java
Это уже не лечится, тут не в сеньеры метить, а заново в школу идти: вы даже прочесть не в состоянии что вам написали.

Ну давайте прочитаем что вы написали
" пользователь обозвался "'; --" как по вашему, что дальше произойдет? Да фиг с ним, пусть пользователь не какер, а просто у него в имени одинарная кавычка.

Ну вот ваши слова ?
Я обозвал пользователя и с кавычками,с дефисами и прочее и ничего не произошло,программа отработала без проблем.
Ну честно я за адекватную критику )
27 мар 19, 12:27    [21844901]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 17915
Озверин
Я не знаю людей, которые бы посмотрели на это в бизнес приложении и сказали, ну да - тут понятно, что написано...и это обосновано.
давненько это было - "... не читал, но осуждаю..."
тебе показали кусок кода и ты , не зная всего, заявляешь, что это не обосновано...
странно для специалиста...
27 мар 19, 12:28    [21844902]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5183
вадя, ты же дал ссылку на видео...на какой там минуте говорится про производительность рефлексии то?
Насчет предложений - https://google.gik-team.com/?q=code smells if statements
27 мар 19, 12:33    [21844910]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5183
вадя
Озверин
Я не знаю людей, которые бы посмотрели на это в бизнес приложении и сказали, ну да - тут понятно, что написано...и это обосновано.
давненько это было - "... не читал, но осуждаю..."
тебе показали кусок кода и ты , не зная всего, заявляешь, что это не обосновано...
странно для специалиста...


сомневаюсь, что ты понимаешь смысл цитаты "не читал, но осуждаю", учитвая, контекст употребления тобою ;)
мы говорим о конкретном приложении, если бы в данном конкретном приложении я увидел такой код, я бы как минимум удивился, а как максимум - заставил переписать на понятный человеческий язык.
27 мар 19, 12:34    [21844912]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 17915
mayton
Озверин прав вобщемто. Самая главная проблема что рефлексия противоречит ООП.
это не означает необходимость использования портянок if/case
mayton
Грубо говоря правила ООП никак не регламентируют то поведение которое добавляет
эта опция JVM.
будем биться сквозь стену, когда есть рядом открытый проход?
mayton
Тоесть все учасники
разработки должны понять что здесь и как. Технический долг от рефлексии не должен
расти.
если есть выбор между 50++ if/case и рефлексией (причем заранее известно , что 50++ это не предел) что будешь выбирать?
27 мар 19, 12:34    [21844913]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5183
asv79
Андрей Панфилов
пропущено...
Это уже не лечится, тут не в сеньеры метить, а заново в школу идти: вы даже прочесть не в состоянии что вам написали.

Ну давайте прочитаем что вы написали
" пользователь обозвался "'; --" как по вашему, что дальше произойдет? Да фиг с ним, пусть пользователь не какер, а просто у него в имени одинарная кавычка.

Ну вот ваши слова ?
Я обозвал пользователя и с кавычками,с дефисами и прочее и ничего не произошло,программа отработала без проблем.
Ну честно я за адекватную критику )


вам надо с вадей обсуждать - вы где то на одном уровне понимания проблематики и того, чего от вас хотят. Вам указали на то, что у вас проблемы с манерами, немолодой человек ;)
Насчет sql иьекций, тоже отправлю вас: https://google.gik-team.com/?q=sql injection simple example
27 мар 19, 12:38    [21844916]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5183
mayton
Озверин прав вобщемто. Самая главная проблема что рефлексия противоречит ООП.
Грубо говоря правила ООП никак не регламентируют то поведение которое добавляет
эта опция JVM.

Рефлексию можно использовать. Но это использование не должно быть безальтенативным
и команда разработки должна дать зеленый свет на code-review. Тоесть все учасники
разработки должны понять что здесь и как. Технический долг от рефлексии не должен
расти.


если кратко - нужен веский мотив НА использование рефлексии в проекте. Прямо ну очень веский.
Если человек заменяет if на рефлексию - он еще джун.
27 мар 19, 12:39    [21844919]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 17915
Озверин
вадя, ты же дал ссылку на видео...на какой там минуте говорится про производительность рефлексии то?
там много про производительность - куча тестовых примеров с измерением времени.
Озверин
Насчет предложений - https://google.gik-team.com/?q=code smells if statements
пусть покажут пример , когда этих методов 50++, и их число не ограничено в процессе разработки
27 мар 19, 12:39    [21844920]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5183
вадя, на какой минуте про рефлексию?
27 мар 19, 12:40    [21844922]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 17915
Озверин
если кратко - нужен веский мотив НА использование рефлексии в проекте. Прямо ну очень веский.
Если человек заменяет if на рефлексию - он еще джун.
50++ if - этого не достаточно?
27 мар 19, 12:40    [21844923]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5183
вадя
пусть покажут пример , когда этих методов 50++, и их число не ограничено в процессе разработки


чего?
27 мар 19, 12:41    [21844925]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5183
вадя
Озверин
если кратко - нужен веский мотив НА использование рефлексии в проекте. Прямо ну очень веский.
Если человек заменяет if на рефлексию - он еще джун.
50++ if - этого не достаточно?


еще раз, от них можно избавить БЕЗ рефлексии.
27 мар 19, 12:41    [21844926]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 17915
Озверин
вадя, на какой минуте про рефлексию?
практически с начала,
27 мар 19, 12:44    [21844929]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 17915
Озверин
еще раз, от них можно избавить БЕЗ рефлексии.
пример?
27 мар 19, 12:45    [21844931]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 3 4 5 6 7 [8] 9 10 11 12 .. 137   вперед  Ctrl
Все форумы / Java Ответить