Java. Проблема с null. Null safety.

Поділитися
Вставка
  • Опубліковано 14 лис 2024

КОМЕНТАРІ • 78

  • @void656
    @void656 2 роки тому +18

    интересно, спасибо. Вообще было бы интересно больше видео про разбор ошибок, хорошие и плохие практики, почему какой-то код написан не правильно и почему и как правильно и почему. Как-то так

  • @romawar1869
    @romawar1869 2 роки тому +7

    Да ладно , месяц спустя ))) ,
    я уже подумал плохое случилось , очень рад что нет
    надеюсь у тебя все хорошо ,

  • @Alexander-is1eq
    @Alexander-is1eq Рік тому +3

    Очень полезный урок. Спасибо большое!

  • @elena-8363
    @elena-8363 2 роки тому +3

    А я уже думала пилить Optional везде, где можно. Передумала! Отличное видео.

  • @fxvlad
    @fxvlad 2 роки тому +1

    Сергей, вы такой крутой мужик, спасибо!!!

  • @godzosioda
    @godzosioda 8 місяців тому

    Круто! Спасибо за такие "фишечки"!

  • @MagDag_
    @MagDag_ 2 роки тому +1

    Привет из Флориды! Спасибо!

  • @АсенькаАлей
    @АсенькаАлей 2 роки тому

    Спасибо большое! Очень рада Вас снова слышать. 🙏

  • @serhiinik
    @serhiinik Рік тому

    Спасибо огромное! На курсах так доступно не обьясняют!

  • @olezhonnv3215
    @olezhonnv3215 2 роки тому +5

    Любому разрабу полезно покодить на Си.
    Вот для того, чтобы внимательность натренировать.
    Segmentation fault и вообще, ручная работа с памятью - реально тренирует внимательность.
    И проблема налл сама собой лечится, вы будете чувствовать пятой точкой, где может быть проблема.
    Уже работая на PHP, Java, JS и так далее.
    Эти языки расслабляют, после Си.
    А у меня много сишного кода в продакшне - знаю, о чем говорю.
    Не то, чтобы призываю к чему-то, просто для развития, на Си покодить полезно.
    Без фанатизма, просто базу дает хорошую, и по ОС - процессы, потоки, память, и по сети - ТСП, УДП. И вообще, как работает компьютер.

    • @AndrewOBannon
      @AndrewOBannon Рік тому +1

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

    • @Das.Kleine.Krokodil
      @Das.Kleine.Krokodil Рік тому +1

      А сишники друг другу так говорят про ассемблер. А 1сники друг другу так говорят про жаву

  • @user-lt1jqrhcp7ext321
    @user-lt1jqrhcp7ext321 2 роки тому

    Сергей, спасибо за ваши уроки.

  • @ДанилаБагров-ъ1ы
    @ДанилаБагров-ъ1ы 2 роки тому

    Класс!!! Спасибо за видео и пищу к размышлению ✊

  • @valitovgaziz
    @valitovgaziz Рік тому +1

    Рахметы. Идем в писать стартап))))

  • @rollingdice
    @rollingdice 2 роки тому

    спасибо тебе святой человек) обожаю твою подачу.

  • @yushchenkoalexey
    @yushchenkoalexey 2 роки тому

    Как всегда, замечательное видео, большое спасибо!

  • @ascar66
    @ascar66 2 роки тому

    Спасибо большое науку.

  • @ВазгенБурген
    @ВазгенБурген 6 місяців тому

    У Вас хорошие ролики.

  • @yurybelozerov3610
    @yurybelozerov3610 2 роки тому

    В целом очень полезный урок. Только одно возражение по поводу @NotNull аннотации - описание в комментарии к Sergey Sukhotsky.

  • @wildjoe6259
    @wildjoe6259 2 роки тому

    Познавательно! Спасибо!

  • @namefamily957
    @namefamily957 2 роки тому

    Надеюсь у вас там все хорошо!

  • @АлексейМатиас-д4р
    @АлексейМатиас-д4р 11 місяців тому

    Спасибо. Хорошо бы было добавить про Objects.requireNonNull() и Objects.requireNonNullElse()

  • @user-vt5yu9ez9d
    @user-vt5yu9ez9d 2 роки тому

    Спасібо, было интересно

  • @user-ce3lm7sz1k
    @user-ce3lm7sz1k 2 роки тому

    класс, очень интересно

  • @marvinheemeyer7027
    @marvinheemeyer7027 2 роки тому

    Спасибо за урок

  • @olezhonnv3215
    @olezhonnv3215 2 роки тому +1

    Optional - это налл, в профиль.
    Вместо налл появляется емпти - браво!

    • @olezhonnv3215
      @olezhonnv3215 2 роки тому +1

      Шо так проверять на налл, шо иначе проверять на емпти.
      Но, зато ввели дополнительный класс и якобы избавились от налл, заменив его суррогатом в виде Оптионал.
      Чем всех так тот налл пугает, на этапе отладки забытые проверки отлавливаются и доставляются.
      Может быть, я однобоко смотрю на проблему.
      Я за безопасный и надежный код.

  • @Rommel7755
    @Rommel7755 2 місяці тому

    Здравствуйте. А как насчет инициализации объектов по требованию во время выполнения программы. С null это очень удобно. В методе проверил на null. Если ссылка на null тут же инициализировал и все. Объекты создались и далее уже эта проверка будет запрещать ненужное пересоздание объектов при вызове этого метода. Или есть какая альтернатива? Я не особо опытный в этом вопросе но как по мне final - не вариант, так как он сразу потребует создать полноценный объект. А это + к времени загрузки.

    • @arhitutorials
      @arhitutorials  2 місяці тому

      Если удобно, то почему бы нет.

  • @РоманИванов-ъ2з

    500 лайк с меня!

  • @antonio82917
    @antonio82917 2 роки тому +2

    Знаю случай когда вопрос о том ставить ли final перешёл в серьёзные дрязги в команде.
    Лично я убеждён что final для локальных переменных это пустая трата 6 символов. За много лет работы не встречал таких случаев, чтобы final от чего то спас, все гипотетически примеры очень надуманные.

    • @RenderDragon
      @RenderDragon 2 роки тому

      Полностью с тобой согласен :)

    • @Das.Kleine.Krokodil
      @Das.Kleine.Krokodil Рік тому

      "не встречал таких случаев, чтобы final от чего то спас"
      Как вы определили, что final не спас от чего то?

    • @antonio82917
      @antonio82917 Рік тому

      @@Das.Kleine.Krokodil Ну как если бы я хотел что-то сделать с переменной и не смог потому что она final и я сразу прозрел и осознал свою ошибку. Если мне нужно изменить программу - я точно знаю что я делаю, и мне придется потратить немного лишнего времени чтобы удалить final. То есть мало того что final создает ненужный шум в коде, я еще должен тратить время на то чтобы добавлять и удалять его.

    • @Das.Kleine.Krokodil
      @Das.Kleine.Krokodil Рік тому

      @@antonio82917 по вашим словам вы как правило не ставите финал, поэтому противоречие

  • @nevmen9sha
    @nevmen9sha 2 роки тому

    Спасибо!

  • @Libra7by
    @Libra7by 2 роки тому

    Посмотрел ролик, и еще раз повторюсь: "Какой Kotlin оху...замечательный!"

  • @lostus7695
    @lostus7695 2 роки тому

    Спасибо

  • @u_n_d_e_r_s_c_o_r_e_d
    @u_n_d_e_r_s_c_o_r_e_d 10 місяців тому

    в чем прикол использовать optional, увеличивая нагрузку, если можно вручную сделать проверку?

    • @arhitutorials
      @arhitutorials  10 місяців тому

      А как узнать, где нужно делать проверку и где не нужно?

  • @КостяКостя-в7ъ
    @КостяКостя-в7ъ 2 роки тому +1

    На данный момент востребованы java Android (Junior) разработчики или только kotlin?

    • @arhitutorials
      @arhitutorials  2 роки тому +3

      На данный момент без Котлина шансов нет.

    • @ankudinova
      @ankudinova 2 роки тому

      Старый код на джаве тоже нужно кому-то поддерживать

    • @ankudinova
      @ankudinova 2 роки тому +1

      Говорю про РЕГИОН, у нас стабильные крупные работодатели много платят именно джавистам, котлин в основном в стартапах.

    • @romawar1869
      @romawar1869 2 роки тому

      @@arhitutorials значит нужно на него потихоньку переходить

    • @yarobest9594
      @yarobest9594 2 роки тому

      @@ankudinova существует много разрабов, которые умеют джаву, ведь раньше только она и была. теперь требуется только котлин.

  • @Eduard.Kardashov
    @Eduard.Kardashov Рік тому

    тем не менее, очевидно, что Optional ничего не решает в части null safety, и нет никакой разницы возвращается String или Optional, и первое и второе может быть null.. таким образом, все сводится к джентельменскому соглашению, что возвращается не null, но если так, пользы от Optional нет - просто обертка с дополнительными методами и только

    • @arhitutorials
      @arhitutorials  Рік тому +1

      Не согласен, это разные вещи.
      Если из метода может вернутся null и не null, и это является нормальной ситуацией, то тогда везде в коде нужно ставить проверку. И та и другая ситуация не является ошибкой.
      Если из метода возвращается Optional, то наличие там null вместо Optional нормальной ситуацией не является. Проверок ставить не нужно, приложение должно падать.

    • @Eduard.Kardashov
      @Eduard.Kardashov Рік тому

      @@arhitutorials
      не понял в чем не согласен, все тобой написанное никак не противоречит, написанному мной

  • @MsDocCox
    @MsDocCox 3 місяці тому

    Если кто-то будет смотреть код, то ему через Йода запись намекнуть)

  • @sweetcapitan5690
    @sweetcapitan5690 Рік тому

    Лучший способ избежать NPE на джаве - перестать писать на джаве и перейти на Котлин)

    • @arhitutorials
      @arhitutorials  Рік тому

      Особо талантливые девелоперы ловят NPE и на Котлине)

  • @romawar1869
    @romawar1869 2 роки тому

    это что система удалила 1 мой коментарий или кто то ручками ?

    • @arhitutorials
      @arhitutorials  2 роки тому +1

      Вижу два комментария, ничего не трогал. Пока что все нормально.

  • @SERGEYSUKHOTSKIY
    @SERGEYSUKHOTSKIY 2 роки тому +1

    Что за чушь.... Null это не проблема а возможность. Если там по ссылке чего то нет - это информация и тупо ее скрывать не лучший вариант. Нормальные IDE (типа Eclipse) это показывают в простых случаях - когда ты обращаешься к не инициализарованной переменной. Во всех иных случаях это сигнал, что что-то пошло не так, и он должен быть явно обработан. Not nullable переменные это просто заметание мусора под ковер - проблема просто выскочит у тебя в другом месте.

    • @arhitutorials
      @arhitutorials  2 роки тому

      Я не предлагаю скрывать null. Я предлагаю, насколько это возможно, писать код так, чтоб null принципиально не мог появится.

    • @yurybelozerov3610
      @yurybelozerov3610 2 роки тому

      Абсолютно согласен. Я столкнулся с этой ситуацией, когда перешел на spring boot. Вызывается метод, но ничего не происходит. Оказалось, что spring оборачивает мой код без каких-либо @NotNull и, если видит, что объект == null, то код не выполняется. Хуже не придумаешь, NPE показывает проблему.

    • @SERGEYSUKHOTSKIY
      @SERGEYSUKHOTSKIY 2 роки тому

      @@arhitutorials А смысл? Это всего лишь значение, которое о чем-то говорит, точно так же ты мог бы захотеть писать код так, чтобы чтобы у тебя не было скажем значения 2... :-)

    • @Yornero
      @Yornero 2 роки тому +3

      А не расскажешь, что eclipse подскажет при обращении к БД, когда заранее неизвестно, лежит там объект с каким то идентификатором или нет? Если к кэшу. Или к еще целой куче вещей, которые могут что-то вернуть, а могут и не вернуть, потому что нечего. Optional служит не для заметания мусора под ковер, а для удобной работы с объектами, наличие которых опционально и может варьироваться в тот или иной момент времени. Более того, он как раз таки содержит аж целый набор методов, для обработки случаев отсутствия объекта, поэтому к чему тут идут разговоры о заметании мусора под ковер - вообще не ясно

  • @dzianishrip5139
    @dzianishrip5139 Рік тому

    Танкист!

  • @YuriBildin
    @YuriBildin Рік тому

    А, в чем проблема добавить проверку на null? Ну, серьёзно! Что за нытье? Ты программист, ты должен писать код,который не падает. Ты должен предусмотреть не только все случаи, но и уж тем более проверки на 0, null, отрицательные значения, провериять если нужно пользовательский ввод...

    • @arhitutorials
      @arhitutorials  Рік тому +1

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

  • @janedoe6182
    @janedoe6182 2 роки тому

    В наших квартирах есть розетки и это серьезная проблема. Если в розетку сунуть палец, то может поразить электрическим током. Проблема заложена дизайне электросетей и оборудование обрастает разными шторками, заглушками и диффавтоматами, но все равно, иногда электрик что-либо упускает, и нет-нет да и кто-то попадает под напряжение. В других культурах отказались от розеток и пляшут вокруг костров в набедренных повязках...
    А представляете, если у вас дома есть молоток? Это же можно себе гвоздь забить в палец?!!! А уксус с ацетоном и марганцовка? Ими же можно напиться и умереть в страшных муках! А еще, в наших домах есть газовые плиты...
    В общем, null - зло, отсутствие статической типизации - зло... Постойте, а как джаваскрипт стал самым популярным языком на планете? Человечество опасносте, надо его срочно запретить!

    • @arhitutorials
      @arhitutorials  2 роки тому +2

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

    • @janedoe6182
      @janedoe6182 2 роки тому

      @@arhitutorials Бедные, бедные джаваскрипт-разработчики, так сильно страдают, и дни и ночи грезят о лучшем языке.... XD

    • @arhitutorials
      @arhitutorials  2 роки тому +1

      ​@@janedoe6182 Именно так. Иначе зачем были созданы TypeScript, CoffeScript и Dart?)

    • @janedoe6182
      @janedoe6182 2 роки тому

      @@arhitutorials И как, сильно эти языки, особенно CoffeScript и Dart, обогнали JS по популярности?

    • @chupa00
      @chupa00 2 роки тому

      @@janedoe6182 на ts переходят активно

  • @chicago21
    @chicago21 2 роки тому

    Спасибо! Очень доходчиво

  • @hammerandsickle2537
    @hammerandsickle2537 2 роки тому

    Спасибо.

  • @andriisavchenko6395
    @andriisavchenko6395 Рік тому

    Спасибо

  • @Das.Kleine.Krokodil
    @Das.Kleine.Krokodil Рік тому

    Спасибо

  • @andreyusp2867
    @andreyusp2867 8 днів тому

    Спасибо