|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Хороший вопрос. Почему IOException проверяемое, а NPE нет. Я загуглил и выделил такие критерии: - придется везде явно писать что там может быть NPE поскольку много где идут операции с объектами - причина выше делает код более уродливым - свидетельствует об ошибке программиста Ваши варианты? почему же все таки NPE это проверяемое исключение? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2018, 21:52 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Tsyklopпочему же все таки NPE это проверяемое исключение? имхо смысл некоторых (чтоб не разводить флуд о том нужны ли проверяемые исключения в принципе) исключений в том, что они могут неизбежно возникнуть при определенных обстоятельствах. Хороший пример IOException. Пропала сеть, сайт недоступен - ошибка. Если метод "знает" об этом, но ничего не может (или не должен) по этому поводу предпринять, он прокидывает исключение выше. Возможно вызывающий код сможет что-то с этим исключением сделать, например повторить. Возможно он прокинет исключение еще дальше, если это не по его части. А NullPointer это ошибка программиста, ее не должно было быть, но она случилась ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2018, 00:05 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
По прошествии лет можно констатировать что эксперимент с checked эксепшенами провалился, и хотя совсем от этого уйти не получается, но многие фреймворки и обычные программисты двигаются в сторону только unchecked exceptions. В крайне редком случае, например как в примере выше и в целом когда есть какая-то разумная возможность обработать эксепшен, то только тогда можно использовать checked. В случае нуллпоинтер, нулевая ссылка - всегда нулевая ссылка, и лучше минимизировать ущерб сразу же остановив программу. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2018, 00:35 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
TsyklopПочему IOException проверяемое, а NPE нет. ... Ваши варианты? почему же все таки NPE это проверяемое исключение?Определитесь-таки, NPE checked или нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2018, 06:25 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Андрей Панфилов, опечатался. NPE не проверяемое. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2018, 10:41 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Может я тупой, а что такое проверяемое и не проверяемое ? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2018, 10:50 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Leonid KudryavtsevМожет я тупой, а что такое проверяемое и не проверяемое ?наверно те что пишутся в контракте метода... Названии ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2018, 11:07 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Leonid KudryavtsevМожет я тупой, а что такое проверяемое и не проверяемое ? Видимо вопрос в том что автор хочет чтоб они наподобие SQLException или IOException, требовали отлавливания/обработки. Были более предсказуемы. Решить можно несколькими способами. Самый простой с опытом сам видишь где эта херня точно может всплыть. Ну и проверки делать таки. Покурите Lombok например по этому поводу. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2018, 11:09 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Тогда тем более не понимаю. Хочешь писать в "название метода" - пиши, хочешь отлавливать - отлавливай Никто не запрешает. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2018, 11:19 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Ilya007, По мне ошибка бд и ошибка null всплывает одинаково) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2018, 11:19 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Leonid KudryavtsevМожет я тупой, а что такое проверяемое и не проверяемое ? компилятор требует указывать чекед в троус метода - единственное различие. А то, что можешь или нет - это уже сахар. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2018, 11:21 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Озверин, +1 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2018, 11:58 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
TsyklopПочему..... https://docs.oracle.com/javase/tutorial/essential/exceptions/runtime.html ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2018, 12:06 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Leonid KudryavtsevМожет я тупой, а что такое проверяемое и не проверяемое ? Может. Но и предыдущие ответы тупые, кроме ссылки, которую вы дали. Проверяемое исключение - которое требует обработки в блоке try... catch... [finally]. Вместо того, чтобы делать обработку внутри метода, можно добавить его в throws метода, тогда try... catch будет нужно в коде, охватывающем вызов метода. Он может быть в другом методе, тогда опять надо решать - обрабатывать исключение в нём или вынести в throws. Но где-нибудь в программе catch будет. Для непроверяемых испключений использование try... catch необязательно. Для проверяемых исключений надо иметь ввиду приём - можно вместо try... catch использовать try... finally без catch и throws чтоб обработку производить в catch в коде, вызывающем метод. Проверяемые исключения можно преобразовывать в непроверяемые и наоборот. Так что обработка исключений в Java не такая уж простая тема. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2018, 12:52 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
TsyklopХороший вопрос. Почему IOException проверяемое, а NPE нет. Я загуглил и выделил такие критерии: - придется везде явно писать что там может быть NPE поскольку много где идут операции с объектами - причина выше делает код более уродливым - свидетельствует об ошибке программиста Ваши варианты? почему же все таки NPE это проверяемое исключение? Проверяемые исключения- это те, которые возникают из-за внешних обстоятельств. Сеть умерла, БД сдохла, диск переполнился. Непроверяемые - это ошибки в коде. NPE - ошика в коде, без вариантов. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2018, 13:16 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Alexey Tomin, Чего то не хватает, т.к. "внешние" и "ошибка в коде" не слова антонимы. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2018, 13:31 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Alexey Tomin, вот ту не совсем согласен. Если вот брать Spring к примеру. То там делают непроверяемые исключения если не хватает данных, не правильный логин или пароль и т.д. Но ведь это не значит что ошибка в коде. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2018, 13:35 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Tsyklop, Добавка в имени метода тебе подходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2018, 13:42 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Alexey TominПроверяемые исключения- это те, которые возникают из-за внешних обстоятельств. Сеть умерла, БД сдохла, диск переполнился. Непроверяемые - это ошибки в коде. NPE - ошика в коде, без вариантов. Создатели_JavaRuntime exceptions represent problems that are the result of a programming problem, and as such, the API client code cannot reasonably be expected to recover from them or to handle them in any way. вот тут вот и начинается полное непонимание, как "API client code" может "recover from" "Сеть умерла, БД сдохла, диск переполнился". Т.ч. IMHO все, что Вы перечислили, это как раз скорее RuntimeException, чем API Exception а в целом, IMHO синтаксический сахар. Проверять и внятно обрабатывать (как минимум логировать) - никто не мешает. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2018, 13:43 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsevвот тут вот и начинается полное непонимание, как "API client code" может "recover from" "Сеть умерла, БД сдохла, диск переполнился" зависит от того - кто этот "client api". в идеале он может их корректно обработать, если знает, что они могут возникнуть. Как минимум не упасть, а выдать пользователю внятное сообщение или предложить повторить попытку (если например по timeout обломались). Однако на практике это исключение возможно придется прокинуть на X уровней вверх прежде чем мы достигнем того места, где мы можем "восстановиться". Да, в каком-то смысле это сахар, т.к. мы явно заставляет пользователя API обратить внимание на проблемы, которые могут возникнуть независимо от его воли. Однако сахар этот не очень сладкий в виду других недостатков. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2018, 14:42 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Вообще, стратегия обработки ошибок последовательно шла так: Возврат кода ошибки или dummy value(-1, NaN и т.д) ===> этот способ имеет следующие недостатки: не всегда найдется корректное dummy значение, ведь -1 может быть правильным значением 2) Так как сигнатура метода никак не описывает возможности ошибки, ее легко можно забыть обработать Непроверяемые исключения ==> Это был следующий шаг, который позволял делать централизованную обработку ошибок, но все равно сама возможность ошибки никак не декларировалась и нужно было смотреть документацию и тд. Проверяемые исключения ==> Это был эксперимент Java, насколько я знаю ни в одном другом промышленном языке такой конструкции так и не прижилось. Идея была в том, чтобы закодировать возможность ошибки в самой сигнатуре метода, вы обязаны предпринять какие-то действия(либо пробросить либо обработать), но недостатками было 1) захламление кода, когда метод может состоять из одной строчки полезного кода и 15 эксепшен хандлеры и 2) непредсказуемый флоу выполнения кода, вещь аналогичная goto, если крепко призадуматься. Умные люди извлекли из этого урок и теперь мейнстримом является описывать возможность ошибок в качестве типа возвращаемого значения, и не только возможность ошибок, а опциоальность, асинхронность и т.д, что по научному называется effects. В данном случае программист всегда видит имеется ли возможность что вызываемый код вернет ошибку и имеет свободу извлечь значение из контейнерного типа или работать с контейнером, а реальное извлечение значение будет где-то наверху(в идеале во входной точке приложения). Таким образом ядро вашего кода остается pure(предсказуемым и без side-effectов), ошибку невозможно пропустить, но ваш флоу не может прерваться и уйти непонятно куда. Что касается топика, и нуллпоинтеров, нет смысла кодировать такие проверки, а надо использовать тип Optional если есть какие-то возможности отсутствия значения. Если же нуллпоинтер выскакивает в другом месте, то это очевидная ошибка и программу надо прекращать ибо ваши assumptions о том что переменная будет не равна null оказались вдребезги разбиты суровойреальностью, и чтобы не навредить коду выше или ниже, лучше завершить JVM немедленно ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2018, 17:16 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
забыл никЕсли же нуллпоинтер выскакивает в другом месте, то это очевидная ошибка и программу надо прекращать ибо ваши assumptions о том что переменная будет не равна null оказались вдребезги разбиты суровойреальностью, и чтобы не навредить коду выше или ниже, лучше завершить JVM немедленноВот так и получается, что авианосцы на боевом дежурстве оказываются небоеспособны, потому что решение о перезагрузке выпавшего в осадок компьютера системы управления огнём принимается, если правильно помню, за двенадцать часов. "Персонал проинструктирован вводить данные в это поле". ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2018, 17:27 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
забыл ника надо использовать тип Optional стоит заметить, что сфера применения Optional узко ограничена, а NPE может возникнуть где угодно. например при доступе к параметрам метода или приведении типа ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2018, 17:37 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
chpashaзабыл ника надо использовать тип Optional стоит заметить, что сфера применения Optional узко ограничена, а NPE может возникнуть где угодно. например при доступе к параметрам метода или приведении типа 1) Приведение типов - зло. 2) Почему параметр не Optional? Ну я про то и говорю, что когда есь разумные предпосылки того что объекта может и небыть и есть какой-то способ обойти это - тогда используем Optional, в других случаях даем JVM спокойно умереть от NPE ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2018, 17:41 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
забыл ник....даем JVM спокойно умереть от NPE Как-то круто. А если JVM это WebLogic с 100500 корпоративных пользователей и не законченными транзакциями, тоже даем "спокойно умереть от NPE" ? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2018, 17:45 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsevзабыл ник....даем JVM спокойно умереть от NPE Как-то круто. А если JVM это WebLogic с 100500 корпоративных пользователей и не законченными транзакциями, тоже даем "спокойно умереть от NPE" ? Конечно, а какие варианты? Ну уточню конечно что под JVM я подразумевал программу\runnable\песочницу\реквест к сервлету\контейнер и т.д. Если JVM просто хостит контейнеры, ив контейнеры произошел NPE то надо убивать только его, я думал это очевидно ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2018, 17:49 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
забыл никПочему параметр не Optional? авторThe purpose of Java 8 Optionalis clearly defined by Brian Goetz, Java’s language architect: Optional is intended to provide a limited mechanism for library method return types where there needed to be a clear way to represent “no result," and using null for such was overwhelmingly likely to cause errors подробней о правилах хорошего тона с Optional можно здесь почитать . Как говорится, соглашаться или нет - ваше право. Конкретно про параметры/поля там с пункта 13, но лучше почитать все. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2018, 17:51 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
забыл никЕсли JVM просто хостит контейнеры, ив контейнеры произошел NPE то надо убивать только его, я думал это очевидно"Давайте развернём такую борьбу за мир, чтобы не осталось камня на камне!" Если убивать(ся) по каждому NPE - не напасётесь даже контейнеров. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2018, 18:07 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
юзай скалу ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2018, 20:13 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Basil A. SidorovЕсли убивать(ся) по каждому NPE - не напасётесь даже контейнеров. Какие альтернативы? Еще раз поясню мысль: 1) Мы в сервлете, делаем что-то, натыкаемся на нулевой референс - прекращаем обработку реквеста ибо ничего путного не получится и сэкономим ресурсы БД 2) Мы в потоке\Runnable\Spark job натыкаемся на нулевой референс, что еще можно сделать кроме как закенселиться? 3) Десктопное приложение при инициализации - словили нуллпоинтер - убили JVM В нормально написанном коде нуллпоинтеров быть не может, точка. Если есть возможность того что объекта может не быть - юзаешь Optional или фильтруешь инпут до гарантированного состояния, в любом другом случае - креш таска и фикс нуллпоинтера, никаких retry или handle ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2018, 21:51 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
забыл ник, Да кто ж спорит, для этого и есть разного рода тестирования, даже иногда бывает что из релиза приходится вытаскивать этих мондавошек,будь они неладные )) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2018, 22:04 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
andreykaTюзай скалу спасибо, но нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2018, 22:40 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
TsyklopandreykaTюзай скалу спасибо, но нет. Возможно зря, потому что Где-то в степизабыл ник, даже иногда бывает что из релиза приходится вытаскивать этих мондавошек,будь они неладные )) После перехода на скалу 2 года назад, видел нуллпоинтер раза 3, все из javaбиблиотек прилетали. П.С. Не пропагандирую скалу, там есть много моментов, но изучить крайне советую для расширения программистского сознания ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2018, 01:47 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
andreykaTюзай скалусбегать от NPE в программировании это все равно что проводнику поезда жаловаться на стук колес. Это атрибут жизни. Побочный продукт создания программы. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2018, 08:56 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Petro123andreykaTюзай скалусбегать от NPE в программировании это все равно что проводнику поезда жаловаться на стук колес. Это атрибут жизни. Побочный продукт создания программы. Какие к черту колеса у чемодана? Это ж его носить неудобно будет ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2018, 10:41 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
забыл ник, я к тому что не ЯП надо менять, а идти к уменьшению NPE через скилы и опыт. У начинающего их много, у профи раз в полгода. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2018, 11:41 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
забыл ник, Спасибо, не, все определяет корпоративный стандарт, так сказать - страну не выбирают, имхо, все зависит от качества создания кода + правильного архитектурного решения, нет золотого языка: есть просто код и есть говнокод. нулпоинт частный случай, ну сунете вы свои ноздри не туда и лучите офбаундексепшен - и куда бежать. на какой язык ... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2018, 15:14 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
TsyklopandreykaTюзай скалу спасибо, но нет. оборачивай всё в опшиналы. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2018, 01:01 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
andreykaT, Есть более древние средства: - конструкторы делать без райзе и всегда создавать объект - читать документацию и делать защиту от прилетевшего NPE по документации. - проверять не твои входные выходные) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2018, 09:54 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Таки да. Но тс хотел чекед ексепшн. Заворачивание в опшн это суть оно и есть. Обёртка заставит тебя обработать кейс когда есть только ничего ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2018, 11:22 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
andreykaTОбёртка заставитну если только заставит! И если не забудет поставить инструкции чтобы заставить. Или мы про неожиданные NPE? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2018, 11:49 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
забыл никЕще раз поясню мысль"Аналогично, шеф" - Э.Успенский, "Следствие ведут колобки". И NullPointerException и, например, NumberFormatException - суть одно и то же: некорректные данные. При этом, чтобы определить null достаточно сделать простое сравнение, а чтобы проверить валидность формата требуются достаточно сложные вычисления. Вот, собственно, и вся разница. Падать каждый раз, когда у вас оказались некорректные данные - глупо. Хотя бы потому, что бывают "разумные умолчания". В результате, в некоторых случаях, RuntimeException можно просто подавить (запротоколировать), сохранив корректность поведения. P.S. Напомню, для полноты картины, что Exception тоже не контролируются, но уже по другим причинам. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2018, 12:31 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
мое имхо, что бездумно хендлить все нпе всквозь чревато тем что у тебя может быть ошибка какая-нибудь вообще связанная не с тем что у тебя нпе появился. а захэндлить эту ошибку потом умаешься т.к. 100500й обработкой нпе она пробрасывается вообще хз куда туда где ее и нет вовсе. посему я (опять таки имхо) полагаю что явно хэндлить нпе надо только там где ты явно их ожидаешь. кстати.. по скале.. сейчас кинули на скаловский проект. мне показалось что там тоже излишне этому придают внимание и всё суть слилось к тому что если у тебя может быть дырка вместо значения просто юзай опшн и всё. правда, потом появляется барахло навроде тут вот мы думали что дырок быть не может а теперь оказывается может и переписываешь как ишак всё на опшены. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2018, 12:44 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Basil A. SidorovИ NullPointerException и, например, NumberFormatException - суть одно и то же: некорректные данные. Оо От кого-кого, а от вас я такой чуши услышать не ожидал. Именно потому что его можно обработать, NumberFormatException и является проверяемым. По вашей логике тогда и NPE должен таким быть. Не говоря о том, что сравнить нуллпоинтер с невалидными данными, это как просить айтишника починить компьютер, ну ты ж все равно с ними там работаешь...(с) Basil A. SidorovПри этом, чтобы определить null достаточно сделать простое сравнение, Поэтому я и говорю, что вся валидация входных данных происходит на первом шаге программы, после которого все инварианты домен модели провалидированы и гарантировано верны. Если доменная модель предполагает отсутсвие некого значения - оно кодируется как optional. После этого запускается бизнес-логика(проверка на null ,к слову, врядли ею является, программисты часто путают с нею детали имплементации), которая в идеале без side-эффектов, при одинаковом input должны получаться одинаковые и предсказуемые output. И какие тут null могут быть? В таком случае только убивать(ладно, ладно не JVM, а текущий поток, уговорили) ибо инвариант программы нарушен. точка. Лови-свищи потом причину этого NPE. Basil A. SidorovПадать каждый раз, когда у вас оказались некорректные данные - глупо. Конечно, лучше вернуть некорректный результат. Basil A. SidorovВ результате, в некоторых случаях, RuntimeException можно просто подавить (запротоколировать), сохранив корректность поведения. Ну равняться на говнокод идея не очень здравая. А JAVA API-делы ребята не устают обсираться раз за разом, достаточно вспомнить первые дизайны collection и datetime api. Basil A. SidorovP.S. Напомню, для полноты картины, что Exception тоже не контролируются, но уже по другим причинам. Это-то тут к чему? Подтвердить авторитетность мнения ссылкой надеясь что никто не будет разбираться? P.S. Я прекрасно понимаю многие ограничения, которые накладываются Java(во многом из-за прежних ошибок и нежеланием исправить дело из-за маниакального желания сохранять обратную совместимость) на всю идеальную картину, описанную выше, и optional там убогое кастрированное говно, но это не повод упираться и говорить что "все так должно быть", потому что мы годами так пишем и по-другому непанимаим. Если бы все следовали такой точке зрения то ни лямбд, ни стримов ни паттерн-матчинга мы бы так и не дождались. так что NPE в коде это никак не может быть частью НОРМАЛЬНО написанной программы. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2018, 21:57 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
andreykaTполагаю что явно хэндлить нпе надо только там где ты явно их ожидаешь. Это в каких случаях, например? Можно из реального проекта? Если не изменяет память catch(NullPointerException) многими тулами статик-анализа подсвечивается как ошибка. Ну и этот код никогда в жизни не прошел бы код-ревью в нормальной конторе. andreykaTкстати.. по скале.. сейчас кинули на скаловский проект. мне показалось что там тоже излишне этому придают внимание и всё суть слилось к тому что если у тебя может быть дырка вместо значения просто юзай опшн и всё. правда, потом появляется барахло навроде тут вот мы думали что дырок быть не может а теперь оказывается может и переписываешь как ишак всё на опшены. Можно опять же пример? Вся красота скалы в for-comprehension, что есть синтаксический сахар над монадами. Когда ты входишь в optional контекст и далее работаешь с чистыми и валидными данными, а их отсутствие проверяется и хэндлится без вашего участия. Использовать optional вне контекста монад мало чем отличается от java-way. Собственно, поэтому optional так туго в java и прижился - потому что приходится таскать его туда-сюда через иерархии вызовов и захламлять код проверками на isDefined и прочей херотой. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2018, 22:04 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
что значит без твоего участия хендлится? если ты имеешь ввиду операции внутри маппинга и никогда не вынимать чистое значение, ну так имхо, это тоже самое как предположение что у нас типа всё окей и типа работаем будто всё есть и пихаем туда 100500 операций или 100500 последовательных маппингов. но в любом случае ты это оконечишь орелсом. ну или как есть его передашь там куда-нибудь дальше где оно всё-равно уже без твоего участия сделает тоже самое. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 01:10 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
забыл никandreykaTполагаю что явно хэндлить нпе надо только там где ты явно их ожидаешь. Это в каких случаях, например? Можно из реального проекта? Если не изменяет память catch(NullPointerException) многими тулами статик-анализа подсвечивается как ошибка. ну например, ты читаешь сущность с базы где есть поля (у сущности и у базы), которые могут быть налл. очевидно, что все дальнейшие эволюции с этой сущностью ты будешь проводить подозревая, что там может быть и пусто. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 01:17 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
andreykaTну например, ты читаешь сущность с базы где есть поля (у сущности и у базы), которые могут быть налл. очевидно, что все дальнейшие эволюции с этой сущностью ты будешь проводить подозревая, что там может быть и пусто. Почему они не обозначены в энтити как Optional? Подозреваю, что правильный ответ - так проще и меньше печатать, и сигнатуру функций красивее, ну так чему удивляться? Система типов для того и создана чтобы облегчать нам жизнь, и если какую-то проверку можно перенести в тип - то надо так и делать, иначе вам в javascript ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 02:10 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
andreykaTчто значит без твоего участия хендлится? если ты имеешь ввиду операции внутри маппинга и никогда не вынимать чистое значение, ну так имхо, это тоже самое как предположение что у нас типа всё окей и типа работаем будто всё есть и пихаем туда 100500 операций или 100500 последовательных маппингов. но в любом случае ты это оконечишь орелсом. ну или как есть его передашь там куда-нибудь дальше где оно всё-равно уже без твоего участия сделает тоже самое. Ну да, во входной точке приложения у тебя будет Код: java 1. 2.
И что в этом плохоо? Если это в одном месте, прямо у входа? Вся идея как раз в том, чтобы поместить в контекст и не доставать чистое значение, только на самом верху. А все остальное - чистая функция без сайд-эффектов. Предсказуемая и повторяемая. Геморрой начинается когда у тебя два контекста(например Option + Future или Either + Option и т.д), тогда да - в скале приходится пичать тучу кода, но ведь можно взять scalaz или cats ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 02:15 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
забыл никandreykaTну например, ты читаешь сущность с базы где есть поля (у сущности и у базы), которые могут быть налл. очевидно, что все дальнейшие эволюции с этой сущностью ты будешь проводить подозревая, что там может быть и пусто. Почему они не обозначены в энтити как Optional? Подозреваю, что правильный ответ - так проще и меньше печатать, и сигнатуру функций красивее, ну так чему удивляться? Система типов для того и создана чтобы облегчать нам жизнь, и если какую-то проверку можно перенести в тип - то надо так и делать, иначе вам в javascript Ну так джава то не заставляет. А в скале в каком нибудь слике ты тупо не сможешь нормально написать код если не назовешь такое поле опшином. Плюс опшин сам по себе выглядит не очень. Чисто визуально. В джаве совсем не очень. В скале не очень не совсем но все равно не очень. Что в этих обертках вымораживает это не только опшин плюс Футура но например опшин в опшине или Футура футуры с опшином и прочие матрёшки. Зато типа безопасно. Ога ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 02:22 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Petro123Чего то не хватает, т.к. "внешние" и "ошибка в коде" не слова антонимы. Пример? RuntimeError не беру- это третий вариант, да. Tsyklopвот ту не совсем согласен. Если вот брать Spring к примеру. То там делают непроверяемые исключения если не хватает данных, не правильный логин или пароль и т.д. Но ведь это не значит что ошибка в коде. В спринге наг@нокожено немало. Если брать системные исключения- то всё, как я писал. Единственная неочевидная вещь - NumberFormatException - видимо предполагается, что пржде чем за toInteger хвататься надо пройтись регуляркой, или вообще форматированное поле ввода использовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 07:44 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
chpashaзабыл ника надо использовать тип Optional стоит заметить, что сфера применения Optional узко ограничена, а NPE может возникнуть где угодно. например при доступе к параметрам метода или приведении типа Если не использоват kotlin, то можно хотя бы @Nonnull/@Nullable использовать и читать варнинги. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 07:48 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
забыл никОт кого-кого, а от вас я такой чуши услышать не ожидал. Именно потому что его можно обработать, NumberFormatException и является проверяемым"Аналогично, шеф". Я не зря вставлял ссылки на документацию - оба исключания являются наследником RuntimeException . Они оба непроверяемые, каким бы странным это не казалось в вашей картине мира. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 08:56 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
TsyklopХороший вопрос. Почему IOException проверяемое, а NPE нет. Я загуглил и выделил такие критерии: - придется везде явно писать что там может быть NPE поскольку много где идут операции с объектами - причина выше делает код более уродливым - свидетельствует об ошибке программиста Ваши варианты? почему же все таки NPE это проверяемое исключение? Кстати. По сути все проверяемые исключения не являются исключениями вообще. Открывая файл, даже если он тут точно был, никогда нельзя быть уверен, что он ещё есть. Просто потому, что его может удалить другая программа. Это не исключительная ситуация, а нормальный результат. И любой запрос в сеть не обязан сделать то, что его просят. Поэтому в правильном мире все подобные методы должны возвращать нечто вроде Either<IOErrorDescription, File>. Но что-то подобная прекрасная вещь из функционального мира никак не попадёт в JVM-языки. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 09:32 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Alexey Tomin, Потому что для асинхронной работы придется весь код переписать. Он дугой будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 09:51 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Alexey TominПоэтому в правильном мире все подобные методы должны возвращать нечто вроде Either<IOErrorDescription, File>.в моделировании ИС строят упрощенную модель. Т.е.допускают что файл не удалят, а если удалят, то это форс мажор. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 09:55 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
с изером кстати, неплохая идея. но суть это просто параллельная концепция замены проверяемого ексепшена и всё. короче, те же яйца, но в анфас. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 10:51 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Alexey TominПоэтому в правильном мире все подобные методы должны возвращать нечто вроде Either<IOErrorDescription, File>. Но что-то подобная прекрасная вещь из функционального мира никак не попадёт в JVM-языки. тоже самое разница вместо трайкача ты делаешь всё совершенно тоже самое но кейсами. тут не кровати переставлять надо. тут шлюх менять нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 10:52 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
andreykaTAlexey TominПоэтому в правильном мире все подобные методы должны возвращать нечто вроде Either<IOErrorDescription, File>. Но что-то подобная прекрасная вещь из функционального мира никак не попадёт в JVM-языки. тоже самое разница вместо трайкача ты делаешь всё совершенно тоже самое но кейсами. тут не кровати переставлять надо. тут шлюх менять нужно.+1 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 11:33 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
andreykaTтоже самое разница вместо трайкача ты делаешь всё совершенно тоже самое но кейсами. тут не кровати переставлять надо. тут шлюх менять нужно. Отличий много, перечислю основные - 1) Исключения, даже checked легко забыть обработать\подавить пустым catch блоком. В случае Either, а лучше наверное даже Try, тебе никуда не деться, придется обработать. Этот концепт почему-то тяжелее всего дается java-програмситам, которым Java слишком много позволяет в плане игнора исключительных ситуаций 2) Исключения, это замаскированный аналог goto, из-за которого флоу программы становится неочевидным и запутанным 3) Исключения генерируют стектрейс, что намного перфоманс затратнее чем создание обертки Список можно продолжать, Either это прежде всего value, которое можно хранить в массиве, передавать в функцию и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 13:13 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Basil A. Sidorovзабыл никОт кого-кого, а от вас я такой чуши услышать не ожидал. Именно потому что его можно обработать, NumberFormatException и является проверяемым"Аналогично, шеф". Я не зря вставлял ссылки на документацию - оба исключания являются наследником RuntimeException . Они оба непроверяемые, каким бы странным это не казалось в вашей картине мира. Да, вы правы, NumberFormatException является Runtime, что лишь еще раз доказывает корявость дизайна. В идеале, опять же все должно сводиться к Optional[Number], просто на момент написания NFE, очевидно ни опшиналов ни какого-либо другого механизма не существовало. Они выбрали оптимальный на тот момент вариант, ну такова селяви. Но это не отменяет всего что я сказал прежде и честно говоря я вообще против каких=либо эксепшенов ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 13:20 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
забыл никandreykaTтоже самое разница вместо трайкача ты делаешь всё совершенно тоже самое но кейсами. тут не кровати переставлять надо. тут шлюх менять нужно. Отличий много, перечислю основные - 1) Исключения, даже checked легко забыть обработать\подавить пустым catch блоком. В случае Either, а лучше наверное даже Try, тебе никуда не деться, придется обработать. Этот концепт почему-то тяжелее всего дается java-програмситам, которым Java слишком много позволяет в плане игнора исключительных ситуаций 2) Исключения, это замаскированный аналог goto, из-за которого флоу программы становится неочевидным и запутанным 3) Исключения генерируют стектрейс, что намного перфоманс затратнее чем создание обертки Список можно продолжать, Either это прежде всего value, которое можно хранить в массиве, передавать в функцию и т.д. т.е. ты считаешь когда эксепшн обрабатывают специальной уникальной для эксепшна конструкцией - это типа плохо и не тру. а когда его обрабатывают по-сути очередным иф-елсом -- это окей? )) мне кажется, что кейс он вообще-то изначально предназначался для кое-чего другого а то что в той же скале они порой, мапят фор-аелдами, а ловят эксепшены кейсами -- вот тут точно чот не то в датском королевстве. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 13:28 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
забыл никСписок можно продолжать, Either это прежде всего value, которое можно хранить в массиве, передавать в функцию и т.д. это кстати приятное его свойство, но как быть с риском образования матрёшек. когда у тебя будет изер изера изера? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 13:30 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
andreykaTзабыл никСписок можно продолжать, Either это прежде всего value, которое можно хранить в массиве, передавать в функцию и т.д. это кстати приятное его свойство, но как быть с риском образования матрёшек. когда у тебя будет изер изера изера? это как раз-таки легко. Для этого и существует for-comprehension. Откуда появляется второй слой either, если он должен схлопываться flatMap? Если приведешь пример, можем вместе обсудить как отрефакторить. У меня лично такого не встречалось. Вот Future[Try[Option]] - тут есть определенные проблемы. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 13:34 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
окей, я тебя понял ) периодически втыкаюсь в это и как то там переставляю всё местами и получается избавиться. наверное это и правильно. будет - спрошу. кстати футур трай опшн - тоже неплохой вариант матрёшки. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 13:35 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
забыл ник1) Исключения, даже checked легко забыть обработать\подавить пустым catch блокомЛюбое исключение можно подавить, но нельзя "забыть" о проверяемых исключениях. Проверяемые исключения именно для того и делали, чтобы гарантировать их обработку.Список можно продолжать, Either это прежде всего value, которое можно хранить в массиве, передавать в функцию и т.д."Допустим, ты пробил стену головой. Ну и что ты будешь делать в соседней камере?" ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 13:38 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
andreykaT т.е. ты считаешь когда эксепшн обрабатывают специальной уникальной для эксепшна конструкцией - это типа плохо и не тру. а когда его обрабатывают по-сути очередным иф-елсом -- это окей? )) мне кажется, что кейс он вообще-то изначально предназначался для кое-чего другого а то что в той же скале они порой, мапят фор-аелдами, а ловят эксепшены кейсами -- вот тут точно чот не то в датском королевстве. Нету никакой специальной конструкции и нету никакого иф-елса. Отсутсвие значения\возможность ошибки\асинхронность это лишь побочные эффекты вашей бизнес-логики, чтобы четко описать их суть, и вводятся эти контейнеры(Try, Option...). На входе мы проверили валидность данных, поместили в контекст и дальше работаем с чистеньким кодом Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Каждый метод возвращает опшинал, но внутри for{} - мы работаем только с чистыми значениями, если где-то вернется None, то без твоего вмешательства цепочка прервется и на выходе будет None, который ты ЕДИНОЖДЫ должен обработать само собой. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 13:43 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Basil A. SidorovЛюбое исключение можно подавить, но нельзя "забыть" о проверяемых исключениях. Проверяемые исключения именно для того и делали, чтобы гарантировать их обработку. Тема дискуссии потихоньку размывается. Вы скорее говорите о Java, а я в целом о механизмах обработки ошибок. В контексте Java, учитывая реалии и длинный хвост backward-compatibility, я в принципе согласен с вашими замечаниями. Я лишь хочу сказать что механизм чекед эксепшенов это был эксперимент, и он по факту не удался. А насчет "нельзя забыть" приводит лишь к прекрасному коду типа Код: java 1. 2. 3. 4. 5.
что скорее не решает проблему, а еще больше усложняет и запутывает. В случае типа, в котором закодирована возможность ошибки, проигнорировать не получится ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 13:50 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
andreykaTAlexey TominПоэтому в правильном мире все подобные методы должны возвращать нечто вроде Either<IOErrorDescription, File>. Но что-то подобная прекрасная вещь из функционального мира никак не попадёт в JVM-языки. тоже самое разница вместо трайкача ты делаешь всё совершенно тоже самое но кейсами. Какими кейсами? Вы о чём? На самом деле проблема явно проявляется, когда список объектов для обработки куда-то ушёл, а потом оттуда надо сообщить, что 3 файла обработаны, один не найден, один не того формата. И вот тут с exception начинается ломка, а с either - всё просто и удобно. Или когда надо обработать список объектов, которые в процессе обработки либо претерпевают превращения, либо отбраковываются, а на выходе- надо обработанные выдать, а остальные- записать в лог. И тут получается либо адский цикл с кучей continue (return, если разбить на методы), либо простейший функциональный пайплайн. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 13:50 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
забыл никА насчет "нельзя забыть" приводит лишь к прекрасному коду типа Код: java 1. 2. 3. 4. 5.
что скорее не решает проблему, а еще больше усложняет и запутывает."Вы просто не умеете их готовить". Исключительная ситуация создаётся внешними условиями. Способ обработки никак не может повлиять на сам факт наличия (отсутствия) исключительной ситуации. Если вы пытаетесь обработать исключительную ситуацию, не понимая, что делать - будет плохо при любом способе обработки. Если вы разумный человек и не пытаетесь делать то, чего не понимаете, то контролируемые исключения - всего лишь способ явно указать: "я не знаю, что делать с этим исключением". ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 14:04 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Alexey Tominчто 3 файла обработаны, один не найден, один не того формата.3 типа исключения и секции. Что сложного? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 14:08 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Вернее даже две. Сколько обработано вообще оффтоп. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 14:09 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Petro123Что сложного?В стримы не воткнёшь, а значит "больше кода". P.S. Нет, я не считаю, что это плохо. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 14:10 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Petro123Alexey Tominчто 3 файла обработаны, один не найден, один не того формата.3 типа исключения и секции. Что сложного? а куда список правильно обработанных? В конструктор исключения? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 14:27 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Basil A. SidorovВ стримы не воткнёшь, а значит "больше кода". В soap, http, асинхронность, потоки не воткнуть, но все равно - не велика потеря) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 14:32 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
забыл никPetro123пропущено... 3 типа исключения и секции. Что сложного? а куда список правильно обработанных? В конструктор исключения?а он каким боком к Исключительной ситуации? Наполовину беременным нельзя. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 14:33 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Если нужен список, то нужно давить исключения, rollback и писать логи. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 14:35 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Petro123забыл никпропущено... а куда список правильно обработанных? В конструктор исключения?а он каким боком к Исключительной ситуации? Наполовину беременным нельзя. А теперь читаем с чего начался разговор... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 15:17 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
забыл ник, Я отвечал на пост 21765926 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 15:41 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
забыл никPetro123пропущено... а он каким боком к Исключительной ситуации? Наполовину беременным нельзя. А теперь читаем с чего начался разговор... а я не понял, где этот разговор начался... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 16:02 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Озверинзабыл никпропущено... А теперь читаем с чего начался разговор... а я не понял, где этот разговор начался... вот тут - Alexey Tomin На самом деле проблема явно проявляется, когда список объектов для обработки куда-то ушёл, а потом оттуда надо сообщить, что 3 файла обработаны, один не найден, один не того формата. И вот тут с exception начинается ломка, а с either - всё просто и удобно. Или когда надо обработать список объектов, которые в процессе обработки либо претерпевают превращения, либо отбраковываются, а на выходе- надо обработанные выдать, а остальные- записать в лог. И тут получается либо адский цикл с кучей continue (return, если разбить на методы), либо простейший функциональный пайплайн. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 16:36 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Озверин, У кого что болит)). Меня пока устраивает система исключений. Неожиданные бывают, значит сам виноват. Имхо. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 16:37 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Alexey TominНа самом деле проблема явно проявляется, когда список объектов для обработки куда-то ушёл , Если ушел, то не надо исключения использовать. Ответ тот же. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 16:39 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Petro123Если нужен список, то нужно давить исключения, rollback и писать логи. it depends. В зависимости от бизнес логики: - обработать до ошибки, вернуть обработанные и ошибку - обработать все до конца, вернуть обработанные и ошибки, если были Вариантов то много, но никто не запрещает написать всякого "сахара" который скроет логику. Вариация на тему: https://github.com/hgwood/java8-streams-and-exceptions ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 16:56 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Озверин, Вот пример. У меня в стеке на глубине 10 только идет запись в базу. А логика и цикл записей коллекции вверху первым уровнем. Т.е. если дубль объекта в базе, то райзе в той глубине и уже там где for я решаю давить или нет. Иначе как мне тут сахар поможет? Все до конца обработать решается там где for стоит. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 17:07 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Озверин, Рассматривать стримы, это как то узко imho. Они только появились. Так много на них пишут? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 17:12 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Petro123Озверин, Рассматривать стримы, это как то узко imho. Они только появились. Так много на них пишут? да, сейчас все идет в реактив сторону, соответственно и стримы очень часто используются. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 21:29 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Petro123Озверин, Вот пример. У меня в стеке на глубине 10 только идет запись в базу. А логика и цикл записей коллекции вверху первым уровнем. Т.е. если дубль объекта в базе, то райзе в той глубине и уже там где for я решаю давить или нет. Иначе как мне тут сахар поможет? Все до конца обработать решается там где for стоит. ну как я и говорю - это зависит от бизнес логики. Если какой-нибудь уровень выше знает, что делать с такой ситуацией - ну ок, орабатывай, а если нет - ну значит ну его нафиг. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2018, 21:30 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
ОзверинPetro123Озверин, Рассматривать стримы, это как то узко imho. Они только появились. Так много на них пишут? да, сейчас все идет в реактив сторону, соответственно и стримы очень часто используются.имхо не согласен. Корпоратив как был, так есть. А вот андроиды всякие, js - те еще ищут свой путь). ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 07:11 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
ОзверинPetro123Озверин, Вот пример. У меня в стеке на глубине 10 только идет запись в базу. А логика и цикл записей коллекции вверху первым уровнем. Т.е. если дубль объекта в базе, то райзе в той глубине и уже там где for я решаю давить или нет. Иначе как мне тут сахар поможет? Все до конца обработать решается там где for стоит. ну как я и говорю - это зависит от бизнес логики. Если какой-нибудь уровень выше знает, что делать с такой ситуацией - ну ок, орабатывай, а если нет - ну значит ну его нафиг.мое имхо что опшионалы тут не вижу чем помогут. Если я пропустил или возбудил исключительную на 10м уровне стека, то все 5 тысяч строк кода я не просматриваю. Ловлю возле for и всё. Имхо. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 07:14 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Petro123Alexey Tominчто 3 файла обработаны, один не найден, один не того формата.3 типа исключения и секции. Что сложного? Исключения они только поодному ходят. А надо обработать все файлы. И не важно, что среди них были отсутствующие. А потом надо передать результат обработки дальше. А потом ещё дальше. И тут даже без стримов всё может быть- обычный for и if - всё одно код намного читабельнее выходит, чем (вынужденное) сияние всего в один метод. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 07:30 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Petro123Alexey TominНа самом деле проблема явно проявляется, когда список объектов для обработки куда-то ушёл , Если ушел, то не надо исключения использовать. Ответ тот же. У меня ощщуение, что Вы либо не поняли, что я пишу, либо не читаете. Причём каждый раз при общении с Вами. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 07:35 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Alexey Tomin, Если бы вы были ближе к народу, программистам, коду. Я бы вас понял). Вы говорите исключительно архитектурные вещи. Они бывают оторваны от реальности. Кто вам мешал прокомментировать что эти стримы очень нужны как юз кейс именно для вас. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 07:45 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Alexey TominRuntimeError не беру - это третий вариант, да.именно про это и отметил. Не хватало третьего варианта при утверждениии: "либо вариант А либо вариант Б". Поэтому я вас не понял). Мы это в теме и разбираем. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 08:01 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Alexey TominИ вот тут с exception начинается ломка, а с either - всё просто и удобно. Обосновывайте, где проблема. «Да как же тебя понять, коли ты ничего не говоришь?» (из комедии «Иван Васильевич меняет профессию») Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 08:24 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Petro123Озверинпропущено... да, сейчас все идет в реактив сторону, соответственно и стримы очень часто используются.имхо не согласен. Корпоратив как был, так есть. А вот андроиды всякие, js - те еще ищут свой путь). корпоратив идет в реактив через микросервисы, которые тоже хотят быть реактив. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 08:39 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Озверин, О да!))) Микросервисы. Тут 2 человека ими занимаются. Причем я не ретроград, поверь). Просто не понял, что его пост выше был посвящен стримам. У меня их нет пока. Так прошел бы мимо. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 08:58 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Petro123мое имхо что опшионалы тут не вижу чем помогут. Если я пропустил или возбудил исключительную на 10м уровне стека, то все 5 тысяч строк кода я не просматриваю. Ловлю возле for и всё. Имхо. Exceptions: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Optional: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9.
Функционально код идентичный, просто ты латентный любитель goto и любишь говнокодить. Это было норм 5 лет назад, пора переучиваться, а то отстанешь навеки ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 13:21 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Petro123Озверин, О да!))) Микросервисы. Тут 2 человека ими занимаются. Причем я не ретроград, поверь). Если я этого не вижу, значит этого нет(с). Частью моих обязанностей является проведение интервью с внешними\внутренними программистами и техническая экспертиза проектов, с целью определить людей на подходящие для них проекты. Так вот, в моей конторе 500+ человек и около 30 проектов в разработке. Контора специализируется на жестком интерпрайзе для американского рынка. Если 4 года назад это были Spring, Hibernate, реляционки, то сейчас как минимум в половине случаев это стримы, спарк, ML, nosql и микросервисы и чем дальше, тем процент таких проектов увеличивается. Напомню, контора специализируется на энтерпрайзе. Так вот, сейчас огромный головняк, куда деть тучу spring-еров и обычных javистов. Проводим ускоренные курсы по ФП, стримам, микросервисам и бигдате, чтобы хоть как-то позакрывать вакансии. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 13:30 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
забыл ник, За пример спасибо. Уважаю. А про goto ты неправ. Вот тут спорят про что 7 страниц? ... Используете вы Optional ? ... Все используют? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 13:33 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
забыл ник, а мне понравился сахар из ссылки, которую я привел: https://github.com/hgwood/java8-streams-and-exceptions/blob/master/src/test/java/me/hgwood/bulky/BulkyTest.java Например: Код: java 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 13:33 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Petro123забыл ник, За пример спасибо. Уважаю. А про goto ты неправ. Вот тут спорят про что 7 страниц? ... Используете вы Optional ? ... Все используют? да тут особо не спорят, так как использовать исключения или нет и как вернуть результат - вопрос вкусовщины. Просто делятся удобством и своим видением. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 13:35 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
забыл никЕсли 4 года назад это были Spring, Hibernate, реляционки, то сейчас как минимум в половине случаев это стримы, спарк, ML, nosql и микросервисы и чем дальше, тем процент таких проектов увеличивается. Реляционки уже сколько хоронят? Ладно. Дождемся когда хотя бы тут в форуме процент вырастет. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 13:37 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Озверинда тут особо не спорятугу. Пока я не попросил код и чел обиделся. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 13:38 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
А если взять конкретный случай, что надо все посчитать и вернуть успешно сделанные и ошибку: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
вернет все успешное и все фейлы. Прикольно, что из названий сразу понятно, КАК отработает метод..довольно декларативненько. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 13:38 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Озверинзабыл ник, а мне понравился сахар из ссылки, которую я привел: https://github.com/hgwood/java8-streams-and-exceptions/blob/master/src/test/java/me/hgwood/bulky/BulkyTest.java Например: Код: java 1. 2. 3. 4. 5. 6. 7.
Согласен, как по мне то выглядит неплохо. Но с этим подходом(именно в Java) есть один косяк, именно из-за checked exceptions. Почитать можно тут - https://www.baeldung.com/java-sneaky-throws И проблема тут не в том, что некоторые нужные checked exception подавляются(ибо я против них в принципе), но то что код становится так сказать неконсистентным. Ну это лирика. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 13:42 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
просто совпало (сегодня на почту пришло почитать) https://medium.com/@johnmcclean/dysfunctional-programming-in-java-5-no-exceptions-5f37ac594323 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 13:44 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Petro123забыл никЕсли 4 года назад это были Spring, Hibernate, реляционки, то сейчас как минимум в половине случаев это стримы, спарк, ML, nosql и микросервисы и чем дальше, тем процент таких проектов увеличивается. Реляционки уже сколько хоронят? Ладно. Дождемся когда хотя бы тут в форуме процент вырастет. Опять узко смотришь. Реляционки никуда не уйдут, просто они будут работать в конкретных кейсах. На большинстве проектов вполне стандартной является ситуация когда юзают реляционку, Cassandra, kafka и redis какой-нибудь - и хадуп\спарк для аналитики но уже в warehouse. Мир не стоит на месте. Вообще мейнстрим сейчас вроде как event sourcing и derivative systems. Схема такая - в систему приходят команды, они валидируются и если все ок, то создаются ивенты, эти ивенты рассылаются в производные системы аля реляционка, elsticsearch и message broker, которыевыступают по факту в качестве materialized views с предпоготовленными данными для определенных типов query ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 13:46 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
забыл никкуда деть тучу spring-еров А спринг тоже что ли... Уже всё? Поясни плиз. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 13:47 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
забыл никСхема такая - в систему приходят команды, они валидируются и если все ок, то создаются ивенты, эти ивенты рассылаются в производные системы аля реляционка, elsticsearch и message broker,разумеется есть специализация. Я более грубо делил на прикладников и системщиков. Вот прикладники программисты и не перейдут никогда на noSQL и микросервисы. А прикладники это большой процент. Ты огульно их goto обозвал. Со стримами позже увидим. Они особый подход требуют. Ака linq в шарпе. Тут я не категоричен. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 13:53 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Petro123забыл никкуда деть тучу spring-еров А спринг тоже что ли... Уже всё? Поясни плиз. Нет, конечно. Spring Boot пока в тренде, да и в принципе spring начинет переходить на reactive way. Но, на мой взгляд, это как оракл бы вдруг решил стать nosql. Какое-то применение все это найдет, сособенно учитывая тонну javистов и на первых порах, но в перспективе я ставлю что его популярность будет сходить и на смену должен придти другой инструмент. Hibernate когда то тоже казался могучим и непоколебимым ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 13:54 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
забыл ник, event source`инг может и мейнстрим, но в 99% случаев он будет является оверхедом для корпоративных систем. Слишком сложен он. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 13:55 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
llemingпросто совпало (сегодня на почту пришло почитать) https://medium.com/@johnmcclean/dysfunctional-programming-in-java-5-no-exceptions-5f37ac594323 Ну вот именно об этом я и говорю ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 13:56 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Озверин, Согласен, сложен он) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 13:57 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
забыл никPetro123пропущено... А спринг тоже что ли... Уже всё? Поясни плиз. Нет, конечно. Spring Boot пока в тренде, да и в принципе spring начинет переходить на reactive way. Но, на мой взгляд, это как оракл бы вдруг решил стать nosql. Какое-то применение все это найдет, сособенно учитывая тонну javистов и на первых порах, но в перспективе я ставлю что его популярность будет сходить и на смену должен придти другой инструмент. Hibernate когда то тоже казался могучим и непоколебимым да ну как-то я сомневаюсь. Спирнг 2.0+ - впитал в себя реактив вэй - стал чрезвычайно легковесным, перешел на нетти дефолтом, очень прост. Его то толком и заменить нечем в продакшене. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 13:58 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Petro123Со стримами позже увидим. Они особый подход требуют. Ака linq в шарпе. Тут я не категоричен. на стримы все перейдут - все таки декларативный (хотя бы вид) кода много облегчает его понимание. конструкция вида list.map.collect понятнее и безопаснее, чем итерирование по коллекциям с вопросом "что же там в цикле происходит такое?". ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 14:01 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Я думаю, цикл смены технологий это лет 5 минимум. Вот и считаем. Причем, 100 процентов в прошлые 5 лет никто не угадал что есть сейчас)). Поэтому и сейчас, поосторожнее с прогнозами). Имхо. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 14:03 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Озверинна стримы все перейдутне верю. В шарпе на linq все перешли? 30 - 50%, но потом опять новое подошло. Счас аналог апплетов готовят webAssembly))) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 14:06 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Petro123Озверинна стримы все перейдутне верю. В шарпе на linq все перешли? 30 - 50%, но потом опять новое подошло. Счас аналог апплетов готовят webAssembly))) причем тут linq? Если ты думаешь, что стримы сложные для освоения - срочно погугли, освой их за 1-2 часа достаточно, чтобы забыть о сложности. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 14:08 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Озверин, Если ты знаешь linq, то это то же самое. Разве нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 14:13 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
оциОзверинзабыл ник, event source`инг может и мейнстрим, но в 99% случаев он будет является оверхедом для корпоративных систем. Слишком сложен он. Тут все гораздо сложнее. Надо учитывать несколько факторов 1) Я имею ввиду именно корпорации, а не Рога и Копыта с учеткой продаж. Во втором случае конечно это overkill 2) Мейнстрим это не значит only one way, и в данный момент идет практическое распознвание ограничений и преимуществ этой модели,как когда-то это было с nosql, бигдата и тд 3) Учитывай что тулы и техники для cqrs\event sourcing не так совершенны и обкатаны. Сама идея то простая до безобразия. Вся сложность техническая. 4) Если брать корпорации или высоконагруженные приложения, то основная проблема в неконсистентности моделей данных, вытекающие из распределнности приложений и требований availability\failover. Сложность поддержки систем в консистентном состоянии намного превышает сложность разработки event-sourcing приложений. Двумя большими плюсами являются a) у нас есть один source of true в системе б) то что система хранит историю, и ее можно "проиграть" заново, в случае ошибки или изменения бизнес логики. В случае традиционных систем - данные это некий снепшот, который ни откатить ни проиграть заново не получится. 5) Большинство инфраструктур уходит в облако и опять же это накладывает некоторые ограничения на стандартную модель. В целом я ожидаю появления инструментов интеграции, в которых декларативно описывается воркфлоу - ивент приходит в систему и идет туда-то, создает такой-то индекс для такого тоquery, сюда идет бэкап. Тут вот стриминг и батч аналитика и тд. Но все данныепо факту производные от первоначального ивента и это отметает кучу проблем, с которыми сталкиваются современные системы. Но это лишь my view конечно же ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 14:15 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Petro123Озверин, Если ты знаешь linq, то это то же самое. Разве нет? э - совершенно другое. Это про функциональный стиль работы с коллекциями в яве. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 14:15 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Озверинlist.map.collect понятнее и безопаснее, чем итерирование по коллекциям с вопросом "что же там в цикле происходит такое?". Я не против твое строчки. Это всего пребразование и филтрация коллекции. Аналог linq в шарпе. А бизнес логику в for куда девать? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 14:15 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Озверин да ну как-то я сомневаюсь. Спирнг 2.0+ - впитал в себя реактив вэй - стал чрезвычайно легковесным, перешел на нетти дефолтом, очень прост. Его то толком и заменить нечем в продакшене. Ну я всего лишь выразил свое мнение, как оно будет посмотрим) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 14:19 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Petro123Озверинlist.map.collect понятнее и безопаснее, чем итерирование по коллекциям с вопросом "что же там в цикле происходит такое?". Я не против твое строчки. Это всего пребразование и филтрация коллекции. Аналог linq в шарпе. А бизнес логику в for куда девать? можно в анонимных функциях описывать внутри, можно выносить в отдельные ф-ии - все тоже самое, что и for, только "переходные" фазы(map, collect) описаны в декларативном виде, а значит итог выполнения конструкции гораздо прозрачнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 14:21 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Озверинэ - совершенно другое. Это про функциональный стиль работы с коллекциями в яве. Linq: Код: java 1.
Это типа join пересечение двух коллекций. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 14:22 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Petro123А бизнес логику в for куда девать? Ну так мы же наоборот от for уходим в сторону декларативного программирования. map, filter и тд - можешь рассматривать это как выделение паттерна, используемого миллион раз в каждом приложении. написанный раз и навсегда. Просто никто не описал это в стиле Gof, и тому подобным. Надо перебрать коллекцию и преобразовать каждый элемент? - тебе map, надо отделить данные по какому-то критерию - filter и т.д. В том то и дело что тебе остается только реализовать свою бизнес логику, не захламленную итерациями и проверками на нул ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 14:23 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Озверин, Раньше слово декларативно означало конфигурацию напр. в XML. Может что и поменялось с тех пор). ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 14:25 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Petro123Если бы вы были ближе к народу, программистам, коду. Я бы вас понял). Куда уж ближе. Ежедневно заталкиваю вытекшие глаза обратно и превращаю кошмар в читаемый код. Не самое плохое, но по теме (код не копирую, а пишу по мотивам): Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
Я не буду объяснять, насколько проще будет с Either Просто mapRight и mapRight ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 14:29 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
забыл никPetro123А бизнес логику в for куда девать? Ну так мы же наоборот от for уходим в сторону декларативного программирования. map, filter и тд - можешь рассматривать это как выделение паттерна, используемого миллион раз в каждом приложении. написанный раз и навсегда. Просто никто не описал это в стиле Gof, и тому подобным. Надо перебрать коллекцию и преобразовать каждый элемент? - тебе map, надо отделить данные по какому-то критерию - filter и т.д. В том то и дело что тебе остается только реализовать свою бизнес логику, не захламленную итерациями и проверками на нулвсе это есть в linq и уже прошло. Я не сильный спец в шарпе, но MS уже не рекомендует пихать linq во все дыры и заменять for на collection.for(b => b.сумма++). Это просто займет небольшую нишу в проектах. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 14:31 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Petro123Озверин, Раньше слово декларативно означало конфигурацию напр. в XML. Может что и поменялось с тех пор). да по моему давно декларативно обозначает, что делается, а не как. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 14:32 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Alexey Tomin, Ну вот и спасибо. Посмотрю. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 14:34 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Озверин, Через какую нотацию и ЯП? А то блин, одно и то же но в java зовут аннотации, а в шарпе атрибутами. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 14:35 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Petro123Озверинэ - совершенно другое. Это про функциональный стиль работы с коллекциями в яве. Linq: Код: java 1.
Это типа join пересечение двух коллекций. это же язык запроса к рсубд. Причем тут стримы? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 14:36 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Petro123Озверин, Через какую нотацию и ЯП? А то блин, одно и то же но в java зовут аннотации, а в шарпе атрибутами. я не очень понял, к чему этот вопрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 14:38 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
ОзверинPetro123пропущено... Linq: Код: java 1.
Это типа join пересечение двух коллекций. это же язык запроса к рсубд. Причем тут стримы? А чем коллекция отличается от запроса в базу если есть ОРМ? Вот так пойдет? var coll2 = coll1.Intersect(col3) Без бд. В оперативке. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 14:44 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
ОзверинPetro123Озверин, Через какую нотацию и ЯП? А то блин, одно и то же но в java зовут аннотации, а в шарпе атрибутами. я не очень понял, к чему этот вопрос.к тому что не очень понятно как перенести мой юз кейс на прошлой странице через стримы декларативно. Не вижу декларативности. Вот декларативное управление транзакциями было видно по атрибутам над методом. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 14:47 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Petro123Озверинпропущено... это же язык запроса к рсубд. Причем тут стримы? А чем коллекция отличается от запроса в базу если есть ОРМ? Вот так пойдет? var coll2 = coll1.Intersect(col3) Без бд. В оперативке. чтобы ответить на этот вопрос, мне надо будет узнать гораздо подробнее, что такое linq $) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 14:53 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Озверин, Код: java 1.
На понимаю чего все ополчились на for. Вот по вашему мнению декларативно вместо for. Он просто там внутри спрятан). Пройтись по стриму, отфильтровав и присвоить имя Вася. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 14:58 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Озверин чтобы ответить на этот вопрос, мне надо будет узнать гораздо подробнее, что такое linq $) Linq это была первая попытка отделить источник данных от метода его обработки. В скале аналогом является slick То есть по факту ты работаешь с базой данных как с коллекцией данных, users.map(_name = ..).filter(id > 10) а система преобразует это в select * from users where id > 10 and name = ... В том числе поддерживаются join, groupBy и тд плюшки. Концепт очень мощный. Причем чисто теоретически ты можешь построить такую абстракцию над любым источником данных, будь то XML файл или рекорд в БД или объектв памяти итд. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 14:59 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Озверинчтобы ответить на этот вопрос, мне надо будет узнать гораздо подробнее, что такое linq $)тогда я скажу что стрим это linq, и хайп там уже прошел, а ты не спорь. Это моё имхо) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 15:01 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
забыл ник, Да. Только есть linq to sql, linq to Object и еще куча всяких как у спринга. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 15:03 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
забыл никОзверинчтобы ответить на этот вопрос, мне надо будет узнать гораздо подробнее, что такое linq $) Linq это была первая попытка отделить источник данных от метода его обработки. В скале аналогом является slick То есть по факту ты работаешь с базой данных как с коллекцией данных, users.map(_name = ..).filter(id > 10) а система преобразует это в select * from users where id > 10 and name = ... В том числе поддерживаются join, groupBy и тд плюшки. Концепт очень мощный. Причем чисто теоретически ты можешь построить такую абстракцию над любым источником данных, будь то XML файл или рекорд в БД или объектв памяти итд. суть абстракции я понял/ Внешне - пока мало чем отличается, кроме ключевых слов. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 15:06 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Petro123Озверинчтобы ответить на этот вопрос, мне надо будет узнать гораздо подробнее, что такое linq $)тогда я скажу что стрим это linq, и хайп там уже прошел, а ты не спорь. Это моё имхо) да ты можешь скзаать что угодно ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 15:07 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Petro123Озверин, Код: java 1.
На понимаю чего все ополчились на for. Вот по вашему мнению декларативно вместо for. Он просто там внутри спрятан). Пройтись по стриму, отфильтровав и присвоить имя Вася. честно сказать, что тут происходит - я сразу не могу понять. То есть снаала мы отбираем по коду>123, потом собираем в list, а что потом происходит? Понятно, что типа перебираем, но что будет итогом и для чего - не очень понятно. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 15:17 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Озверин, Да. Только если бд, то ленивость и запрос не пойдет пока не написан toList Внутри ForEach если перейти в кишки линка обычный for)))) Код: java 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 15:25 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Озверини для чего - не очень понятно.ты пел за декларативность без for. Это оно. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 15:26 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Petro123Озверини для чего - не очень понятно.ты пел за декларативность без for. Это оно. а теперь своими словами, что эта конструкция делает? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 15:28 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
ОзверинPetro123пропущено... ты пел за декларативность без for. Это оно. а теперь своими словами, что эта конструкция делает? listOfCompany.Where(c=> c.id > 123).ToList().ForEach(cc => cc.Name = "Вася") ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 15:28 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Озверин, Выше сказал. Фильтрует коллекцию по айдишникам и всем присваивает чере for имя Вася ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 15:32 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
ОзверинlistOfCompany.Where(c=> c.id > 123).ToList().ForEach(cc => cc.Name = "Вася") Код: java 1. 2. 3.
но записано так, чтоб враги не догадались ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 15:51 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
chpashaно записано так, чтоб враги не догадались вот именно))). Тут главное не переборщить в производстве с коротким кодом. Например, в where вместо двух равно поставить одно и коллекция будет испорчена..... Декларативно. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 15:59 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Petro123Тут главное не переборщить это универсальный совет, годящийся для всего ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 16:07 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
chpashaОзверинlistOfCompany.Where(c=> c.id > 123).ToList().ForEach(cc => cc.Name = "Вася") Код: java 1. 2. 3.
но записано так, чтоб враги не догадались да. мой глаз не мог зацепиться из-за отсутствия setName() Petro123Озверин, Выше сказал. Фильтрует коллекцию по айдишникам и всем присваивает чере for имя Вася ни в шарпе forEach не относится к linq, ни в java - к stream. Зачем приводить его в пример? Надо же сравнивать старый способ и новый Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
При анализе кода я гораздо быстрее пойму, что делает первый блок, нежели второй. А вот как он это делает - я буду понимать примерно с одинаковым кол-вом времени. То есть при беглом анализе кода мне удобнее читать стримы. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 16:08 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Озверин Код: java 1. 2. 3. 4. 5.
и для примера на скале - Код: java 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 16:12 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Озверин Код: java 1.
ну, если бизнес логика в одну строку перебросить коллекцию, тогда вполне читабельно). ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 16:16 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Petro123Озверин Код: java 1.
ну, если бизнес логика в одну строку перебросить коллекцию, тогда вполне читабельно). а гиде фильтрация по длине имени компании? Вопрос же не в кол-ве строк. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 16:19 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Озверин, Изначально вопрос был про райзе. Я так понимаю, что при фильтрации его не будет. Значит спокойно фильтруй стримами. А потом уже for вместе с райзе и сложной БЛ. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 16:21 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Petro123Озверин, Изначально вопрос был про райзе. Я так понимаю, что при фильтрации его не будет. Значит спокойно фильтруй стримами. А потом уже for вместе с райзе и сложной БЛ. а зачем тут for()? O-o ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 16:23 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
ОзверинPetro123Озверин, Изначально вопрос был про райзе. Я так понимаю, что при фильтрации его не будет. Значит спокойно фильтруй стримами. А потом уже for вместе с райзе и сложной БЛ. а зачем тут for()? O-o Отсюда: автормое имхо что опшионалы тут не вижу чем помогут. Если я пропустил или возбудил исключительную на 10м уровне стека, то все 5 тысяч строк кода я не просматриваю. Ловлю возле for и всё. Имхо. Можешь не рассматривать. Юз кейс в продакшене у меня такой. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 16:30 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Ну а так как при работе со стримами обработка исключений стала другой, все стали доказывать что все перейдут на стримы. Поживем увидим. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 16:34 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Petro123мое имхо что опшионалы тут не вижу чем помогут. Если я пропустил или возбудил исключительную на 10м уровне стека, то все 5 тысяч строк кода я не просматриваю. Ловлю возле for и всё. Юз кейс в продакшене у меня такой. Ну так я ж приводил пример - напиши свой коллектор, пусть он бросает exception - в чем проблема? Универсальный реюзабельный код, что еще надо? Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 16:42 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Озверин, Хммм. У нас же коллекция заканчивается на второй строке for. Далее вся работа не с коллекцией стримом, а с объектом из этой коллекции. Уходит в стек на глубину 10 методов. Ничего не выигрываем. Если в спринге транзакции и аннотации вешаются на весь стек, то тут ничем не выигрываем. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 17:04 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
авторR collect(Collector collector) Один из самых мощных операторов Stream API. С его помощью можно собрать все элементы в список, множество или другую коллекцию, сгруппировать элементы по какому-нибудь критерию, объединить всё в строку и т.д.. В классе java.util.stream.Collectors очень много методов на все случаи жизни, мы рассмотрим их позже. При желании можно написать свой коллектор, реализовав интерфейс Collector.это типа паттерна визитор, для обработки коллекции. Другой юзкейс. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 17:07 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Petro123Озверин, Хммм. У нас же коллекция заканчивается на второй строке for. Далее вся работа не с коллекцией стримом, а с объектом из этой коллекции. Уходит в стек на глубину 10 методов. Ничего не выигрываем. Если в спринге транзакции и аннотации вешаются на весь стек, то тут ничем не выигрываем. мне иногда кажется, что я общаюсь с генератором случайных фраз..транзакции и аннотации тут причем? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 17:11 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Petro123авторR collect(Collector collector) Один из самых мощных операторов Stream API. С его помощью можно собрать все элементы в список, множество или другую коллекцию, сгруппировать элементы по какому-нибудь критерию, объединить всё в строку и т.д.. В классе java.util.stream.Collectors очень много методов на все случаи жизни, мы рассмотрим их позже. При желании можно написать свой коллектор, реализовав интерфейс Collector.это типа паттерна визитор, для обработки коллекции. Другой юзкейс. только именно коллектор может собрать воедино все нужные тебе результаты и пробросить исключение. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 17:14 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Озверинмне иногда кажется, что я общаюсь с генератором случайных фраз..транзакции и аннотации тут причем?ты не видишь аналогии, а я вижу. Озверинтолько именно коллектор может собрать воедино все нужные тебе результаты и пробросить исключение. Ты путаешь задачи. Юзкейс выше это не сбор результатов, а запись пришедшей коллекции в базу или веб сервис. Паттерн визитор собирает все результаты. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 17:25 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Alexey Tomin Код: sql 1. 2. 3. 4. 5. 6. 7.
? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 20:09 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Petro123Alexey Tomin Код: sql 1. 2.
?Стандартный способ пропустить остаток цикла, не запихивая его в (не)длинный if. В чём проблемы-то? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 20:21 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Basil A. Sidorov, В том что вместо стандартного тюнинга кода, он был переписан на стримы как единственное и крутое решение. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 20:41 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
"Моя-твоя-не-понимай". Лично мне удобнее когда: "если нет, то досрочно выходим", вместо: "если да, то большущий вложенный блок кода". ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 21:18 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Basil A. Sidorov, Ну тогда его ждем. Зачем он выложил тот кусок кода, и что этим показывает. Можно было для наглядности: "было... Проблема... Стало...". ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 21:54 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Basil A. Sidorov"Моя-твоя-не-понимай". Лично мне удобнее когда: "если нет, то досрочно выходим", вместо: "если да, то большущий вложенный блок кода".ну я так и написал. Мне тоже так удобнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2018, 21:55 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
забыл никPetro123Озверин, О да!))) Микросервисы. Тут 2 человека ими занимаются. Причем я не ретроград, поверь). Если я этого не вижу, значит этого нет(с). Частью моих обязанностей является проведение интервью с внешними\внутренними программистами и техническая экспертиза проектов, с целью определить людей на подходящие для них проекты. Так вот, в моей конторе 500+ человек и около 30 проектов в разработке. Контора специализируется на жестком интерпрайзе для американского рынка. Если 4 года назад это были Spring, Hibernate, реляционки, то сейчас как минимум в половине случаев это стримы, спарк, ML, nosql и микросервисы и чем дальше, тем процент таких проектов увеличивается. Напомню, контора специализируется на энтерпрайзе. Так вот, сейчас огромный головняк, куда деть тучу spring-еров и обычных javистов. Проводим ускоренные курсы по ФП, стримам, микросервисам и бигдате, чтобы хоть как-то позакрывать вакансии. Простите хотел уточнить о каких стримах речь и где вы в ентерпрайзе заюзали мл? Ну просто сугубо любопытства ради интересуюсь. ЗЫ. Свичнуться со спринга на что то другое сложности не представляет везде яйца одни и те же с минимумом специфики ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2018, 00:43 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
andreykaTПростите хотел уточнить о каких стримах речь и где вы в ентерпрайзе заюзали мл? Ну просто сугубо любопытства ради интересуюсь. Речь об архитектуре вида https://mapr.com/ebooks/streaming-architecture/chapter-02-stream-based-architecture.html Насчет ML - 1) вычленение полезной информации из рейтингов TV для последующей ее продажи 2) онлайн определение fraud transactions 3) Gaming -> определение стратегии победителей, вычленение и бан ботов(тут правда проект не совсем энтерпрайз) 4) Распознавание ювелирных украшений(чтобы можно было взять напрокат в одном пункте и сдать в другом, той же сети) 5) Определение того не собирается ли человек уволится по некоторым паттернам и соотвествующая реакция HR на это. Конечно, ML не суется всегда и везде, но вот навскидку за последние пару месяцев. Да,это всего лишь мелкие части более крупных систем, но все же тенденция на лицо. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2018, 02:54 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
andreykaT, Сначало этот хайп пошел из андроид гугла как реактивное программирование https://www.google.com/search?newwindow=1&client=tablet-android-huawei&ei=EsQZXNbuBaOqrgT58ZKIBQ&q=android реактивное программирование&oq=android реактивное&gs_l=mobile-gws-wiz-serp.1.0.0j33i160.23868.30168..30934...0.0..0.212.2091.1j13j1......0....1.........0i71j35i39j0i20i263j0i67j0i131i20i263j0i22i30.XD0M8JAUju4 Под такое программирование нужно полностью переписать проект. Т. Е. лучше стартап. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2018, 07:11 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
забыл никandreykaTПростите хотел уточнить о каких стримах речь и где вы в ентерпрайзе заюзали мл? Ну просто сугубо любопытства ради интересуюсь. Речь об архитектуре вида https://mapr.com/ebooks/streaming-architecture/chapter-02-stream-based-architecture.html хм. не знал что это кто то выделил в отдельный тренд и на это оказывается нужно переучиваться. в общем то этот паттерн был описан емнип еще в 2003-м году чуваком писавшим книгу про интеграйшн паттернз. а появился он небось вообще годах так в 60-х. о. а теперь на это надо "переучиваться со спрингбута".... это я вас не подкалываю. просто удивляюсь на что там переучиваться после спринга. это как сказать я умею ездить на машине теперь переучиваюсь копать грядки. по мл да. вроде тема меня тоже пушат на работе ей заняться. а я как то вот не очень к ней предрасположен. и не вижу особого применения. точно так же со временем подохнет как блокчейн. поиграются да забудут. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2018, 16:44 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
andreykaTэто я вас не подкалываю. просто удивляюсь на что там переучиваться после спринга. это как сказать я умею ездить на машине теперь переучиваюсь копать грядки. Ну я хз, конечно если иметь ввиду "программиста" в настоящем понимании, то да - язык и платформа всего лишь инструмент. Но дело в том, что вы удивитесь, но вокруг много формоклепателей, которые не видят дальше своего носа. И аббревиатура ACID ввергает их в шок, а когда они узнают что у БД есть уровни изоляции транзакций.. Так вот, стриминг все же тема посложнее на мой взгляд, чем вы ее пытаетесь представить,это совершенно другой подход к написанию приложений. Тут сразу приходит на ум знакомство с новыми вещами, такими как 1) Reactive patterns\Functional programming 2) EventSourcing\CQRS 3) Distributed consensus, partition, replication, availability 4) Windows, processing\event time]watermark 5) immutable log и т.д. Которые вроде как сами по себе и не сложные и давно описанные, но если ты с ними не встречался то нужно время на усвоение ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2018, 18:49 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Cqrs должен в принципе быть везде. Это по-сути часть solid ну и все остальное - аналогично фундаментальные знания. Это теория которую должны знать все. Те кто не знают - ремесленники а не инженеры ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2018, 19:16 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
andreykaTCqrs должен в принципе быть везде. Это по-сути часть solid ну и все остальное - аналогично фундаментальные знания. Это теория которую должны знать все. Те кто не знают - ремесленники а не инженеры интересно, каким образом cqrs помогает придерживаться solid принципа? Если у меня 2 endpoint`а: post-/issues get -/issues я уже придерживаюсь cqrs паттерна или нет? 1. Таак, смотрим: моя программа имеет command interface(post метод) и query(get). 2. Мои интерфейсы без сайд эффектов По-моему - типичная реализация сервиса в рамках rest архитектуры. Я что-то упускаю? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2018, 09:58 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Озверин, Он загнул немного. Можно даже по простому, на пальцах, посчитать упоминания CQRS на форуме. Один раз за пятилетку. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2018, 10:28 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
ОзверинandreykaTCqrs должен в принципе быть везде. Это по-сути часть solid ну и все остальное - аналогично фундаментальные знания. Это теория которую должны знать все. Те кто не знают - ремесленники а не инженеры интересно, каким образом cqrs помогает придерживаться solid принципа? Если у меня 2 endpoint`а: post-/issues get -/issues я уже придерживаюсь cqrs паттерна или нет? 1. Таак, смотрим: моя программа имеет command interface(post метод) и query(get). 2. Мои интерфейсы без сайд эффектов По-моему - типичная реализация сервиса в рамках rest архитектуры. Я что-то упускаю? нет ты ничего не упускаешь. всё верно. рест соответствует скрс (на мой взгляд, если я еще не разучился понимать прочитанное). скрс это суть проекция понятия сингл респонсибилити. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2018, 11:14 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Ребят. Я всего-то спросил про NPE, а вы 8 страниц наплодили) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2018, 11:21 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
TsyklopРебят. Я всего-то спросил про NPE, а вы 8 страниц наплодили)))) NPE под призмой java8)) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2018, 11:40 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
andreykaTрест соответствует скрс (на мой взгляд, если я еще не разучился понимать прочитанное). скрс это суть проекция понятия сингл респонсибилити. Это до сервера. А на сервере тоже разделение на две модели и две базы. Чтения и записи. Тот еще геморрой. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2018, 11:42 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Tsyklopа вы 8 страниц наплодили) в этом единственный интерес этого форума, хотя вот Настя считает, что он для того чтобы помогать ему/оно лабы писать ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2018, 12:49 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
TsyklopРебят. Я всего-то спросил про NPE, а вы 8 страниц наплодили) Мы не виноваты. Это модераторы форум "просто треп" с сервера убрали. Теперь любой форум, по мало-мальскому поводу в "просто треп" преврашается. (за исключением форума "работа", в ним ничего не поменялось, он всегда "просто треп" дублировал ))) ) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2018, 13:55 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Leonid KudryavtsevTsyklopРебят. Я всего-то спросил про NPE, а вы 8 страниц наплодили) Мы не виноваты. Это модераторы форум "просто треп" с сервера убрали. Теперь любой форум, по мало-мальскому поводу в "просто треп" преврашается. (за исключением форума "работа", в ним ничего не поменялось, он всегда "просто треп" дублировал ))) ) не, ну тут все таки треп за технически темы... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2018, 13:57 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, Не убрали. Для регистрированных он есть. И на java ветке треп невозможен. Контингент не тот). Тут люди работают) и айкю повышенный) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2018, 14:21 |
|
Почему NullPointerException не проверяемое исключение?
|
|||
---|---|---|---|
#18+
Leonid KudryavtsevТеперь любой форум здесь так всегда было - в том и интерес, обсудить тему, узнать что-то новое. а для "как сделать xxx в yyy" уже все ответы на stackoverflow есть ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2018, 14:47 |
|
|
start [/forum/topic.php?all=1&fid=59&tid=2121581]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
106ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
167ms |
get tp. blocked users: |
2ms |
others: | 332ms |
total: | 649ms |
0 / 0 |