.NET 8 i C# 12 - co ten Microsoft ZNOW NALEPIŁ?

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

КОМЕНТАРІ • 70

  • @Teczka126
    @Teczka126 11 місяців тому +110

    Czy planujecie podobny materiał dla nowości w Entity Frameworku?

    • @DevMentorsPL
      @DevMentorsPL  11 місяців тому +47

      szczerze to nie myśleliśmy o tym, ALE... jeżeli pojawi się więcej głosów to dlaczego nie😉 Coś pomyślimy 😀

    • @jkkk547
      @jkkk547 11 місяців тому +15

      ​@@DevMentorsPLw takim razie dołączam do większej liczby głosów

    • @Marcin-jz8qp
      @Marcin-jz8qp 11 місяців тому

      +1

    • @kashiash
      @kashiash 11 місяців тому

      +2

    • @Mytthewx
      @Mytthewx 11 місяців тому

      Zdecydowanie ciśnijcie dalej tematy dotnetowe i entity frameworkowe :D @@DevMentorsPL

  • @piurek10
    @piurek10 11 місяців тому +12

    nullable type jest bardzo przydatny. Oszczedzą nam sporo niepotrzebnych checków. Daje w prosty sposób znać czy dany typ może tu być nullem czy nie. Jest to ogromny improvement. Minus jest taki że wszyscy developerzy muszą wiedzieć co robią.

  • @daretsuki6988
    @daretsuki6988 11 місяців тому +4

    Ja też używam Blazora do pisania własnej apki, robi się już dość sporawa, a i nawet ofertę wskoczenia do projektu zaz $$ już miałem, ale widzę że panowie jednak bardziej szanują javascriptowców niż dotnetowców... Hańba!

  •  11 місяців тому +1

    Dzięki za podsumowanie!

    • @DevMentorsPL
      @DevMentorsPL  11 місяців тому +1

      Dzięki i pozdrawiamy Ostrą Piłę!

  • @XBary_PL
    @XBary_PL Місяць тому

    jako początkujacy :) zapytam jak ta pani: "...a na co to komu.?" , ale fajny wasz kanał, rzeźbię w blazor stronę do obsługi swojego systemu rejestrujacego zdarzenia w systemach sterowania i bardzo widzę przydatne ciekawostki się dowiaduje od Was.

  • @alanthomenson3818
    @alanthomenson3818 11 місяців тому +3

    Coś nieco podobnego do aliasów jest w C++ (typedef). Jak się ma takie narzędzie, to pokusa żeby przykryć każdą, nieco bardziej złożoną konstrukcję jest ogromna. Obstawiam, że to będzie masowo nadużywane, bo z takim aliasem kod wygląda ładniej i prościej.

    • @XBary_PL
      @XBary_PL Місяць тому

      i takie "zaciemnienie kodu" i inne uniemożliwia analizowanie cudzego kodu bez IDE

  • @dziarskihenk8798
    @dziarskihenk8798 11 місяців тому +4

    nullable ref type to imo jedna z najlepszych zmian jaka spotkała c#, korzystamy z niego w każdym projekcie

  • @Eddyi0202
    @Eddyi0202 11 місяців тому +7

    Odnośnie Nullable Reference Types to ja osobiście korzystam bo widze z tego korzyść, wole kiedy faktyczne explicite jest podane że metoda może zwracać dany typ referenrencyjny bądź nulla. Ale ważna rzecz że przy tworzeniu nowego projektu od razu konfiguruje csproj tak żeby warningi związane z NRF były traktowane jako errory a nie warningi bo inaczej to się to olewa po prostu xd Z drugiej strony jak ktoś jest leniwy w zespole to po prostu wrzuca null forgiving operator i się nie przejmuje, więc faktycznie lepiej jak jednak cały zespół stara się to wykorzystywać z sensem.

    • @DevMentorsPL
      @DevMentorsPL  11 місяців тому +1

      Dokładnie, wiele jednak zależy od kultury organizacji i tego, na ile każdy respektuje zasady/konwencje przyjęte w projekcie :)

    • @TeoVincenT1
      @TeoVincenT1 11 місяців тому +3

      To jest mega. Dzięki temu już na poziomie kompilatora mamy wsparcie do pisania kodu opartego o kontrakt, co znacząco ułatwia zrozumienie i utrzymanie kodu. Code review można zrobić o wiele szybciej. Nie muszę się martwić, czy wartość zwrócona tutaj lub tam jest poprawnie obsłużona. Jeśli ktoś jawnie użyje `?`, jest to dla mnie zawsze istotna informacja. Kod piszę tak, aby w ogóle nie było w nim nullowalnych typów referencyjnych.
      Występują jednak wyjątkowe sytuacje, na przykład przy definiowaniu dostępu do bazy danych w Entity Framework, czyli w DbContext. Tutaj kompilator ostrzega, że podałeś typ not-nullable, ale nigdzie nie ustawiasz go w konstruktorze. Rozwiązuję to dodając słowo kluczowe required, które informuje kompilator, że zawsze, gdy będę chciał stworzyć instancję tego typu, kompilator będzie sprawdzał, czy tę wartość ustawiam. Sztuczka polega na tym, że nigdy nie trzeba ręcznie wywoływać tego konstruktora, ponieważ obiekt jest pobierany z kontenera IoC.
      Oczywiście są przypadki, w których nie ma innego wyjścia i trzeba użyć operatora nullable, ale są one bardzo rzadkie - ciężko mi przywołać taki przykład. Zdarzają się również sytuacje, gdzie trzeba dodać operator `!`, informujący kompilator, że tutaj nigdy nie będzie nulla. Takie przypadki są również bardzo rzadkie, i zgodnie z zasadą pisania kodu opartego na kontrakcie, ten operator powinien być dodawany na jak najwyższym poziomie, propagując już not-nullable w dół.
      Konkretny przypykład w którym jest uzasadnione użycie operatora `!`: tworzymy pomocniczą metodę do deserializacji obiektu z JSON, metodę parametryzujemy typem generycznym a w wyniku otrzymujemy obiekt typu object. Wiemy, że jest ten rezultat jest konkretnego typu i wówczas można użyć operatora `as` do rzutowania na ten konkretny typ. Kompilator jednak ostrzeże, że wynikiem tego operatora może być null, więc będzie chciał aby dodać operator `?`. My jednak jesteśmy pewni, że albo deserializacja zwróci nam ten typ, który chcemy, albo rzuci wyjątkiem. Dlatego przy tym operatorze `as` można dodać operator `!`.
      Podsumowując, moim zdaniem należy pisać kod tak, aby unikać typów nullable, a w skrajnych przypadkach, świadomie dodawać atrybuty lub pragmy kompilatora, wyłączające w danej linii to ostrzeżenie. To pozwala być pewnym, że robimy to celowo, a nie przez przypadek.

    • @muczos
      @muczos 11 місяців тому

      fajnie napisane, moze warto stworzyc kanał albo bloga z taka wiedza :P @@TeoVincenT1

    • @DevMentorsPL
      @DevMentorsPL  11 місяців тому +2

      super podsumowanie! Dzięki wielkie!@@TeoVincenT1

    • @piotrlenartowicz9894
      @piotrlenartowicz9894 11 місяців тому

      Wszystko fajnie w trakcie pisania kodu (jak jeszcze włączymy errory, zamiast warningow). Ale i tak możemy przekazać null np. przez refleksje, albo z jakiegoś factory method, czy odczytując dane z bazy i nie widziałem opcji na zabezpieczenie przed tym. Dlatego to takie połowiczne zabezpieczenie. Gdyby to waliło wyjątkiem (innym niż null reference exception przy odczycie) trochę jak aspekty używane, np. w postsharp gdzie null zawsze byłby zatrzymany to byłoby fajne. A tak… taka proteza i zamieszanie, bo czasem i tak pojawi się null tam gdzie zakładamy że go nie będzie. Ja nie widzę dla niego zastosowania.

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

    Podejmiecie tematykę dotyczącą wejścia na rynek?

  • @seg3663
    @seg3663 11 місяців тому +2

    Każdy problem wymagający keyed services można rozwiązać prostując architekturę bez użycia keyed services. Przyklady, ktore pokazaliscie sprawiaja, ze rece opadają.

    • @DevMentorsPL
      @DevMentorsPL  11 місяців тому +1

      Pełna zgoda. Pewnie warto obserwować jak będzie postępować adopcja tego ficzera w community 🤔

  • @j3bb9z
    @j3bb9z 11 місяців тому +1

    1:04:19 Generalnie moim zdaniem to nie była dobra decyzja, żeby zmienne i metody w klasach były z dużych liter. Nie wiem czym była podyktowana, chyba chcieli na siłę się czymś odróżnić od Javy.

  • @ziomalxxz
    @ziomalxxz 11 місяців тому +4

    Może coś kiedyś o .net MAUI lub .net ML ;) W końcu .net 8 w końcu masa poprawek. Pozdrawiam Serdecznie

    • @DevMentorsPL
      @DevMentorsPL  11 місяців тому +2

      O ML.NET kiedys chetnie, bo pamietam (jak wspominalem w materiale) czasy przed ML.NET kiedy ani jezyk, ani dostepne biblioteki zycia nie ulatwialy. 🥲
      /Michau

  • @ILogger
    @ILogger 11 місяців тому +3

    Wg. mnie w materiale niedoceniony blazor z nowym render modem (interactive auto). Wg mnie fajna opcja i ogólnie zaczyna on jakoś wyglądać. A że mało osób z niego korzysta... nie znaczy, że jest zły. Jak ktoś zaczyna przygodę z programowaniem i zna C# łatwiej będzie mu wskoczyć w Blazora niż uczyć się JS.

    • @DevMentorsPL
      @DevMentorsPL  11 місяців тому +3

      Nie no pełna zgoda i podkreślaliśmy, że jest to fajna technologia. Ale też weź pod uwagę, że robiąc materiał raczej celujemy w większość ludzi. Pomineliśmy Blazora i EFa myśląc, że mało kogo to będzie obchodzić.. no i community zweryfikowało😀 Myśle, że o Blazorze też coś kiedyś powstanie🫡

    • @ag-ec5ls
      @ag-ec5ls 8 місяців тому

      Materiały z Blazor nie muszą zajmować cały panel danego odcinka. Mogą to być, na samym początku shoty informacyjne :) @@DevMentorsPL

  • @konradkorf1374
    @konradkorf1374 11 місяців тому

    Jaka to wersja Ridera? Mam najnowszą wersję i nie wspiera ona jeszcze składni collection expressions.

    • @DevMentorsPL
      @DevMentorsPL  11 місяців тому +1

      Trzeba pobrać wersje early access (EAP).

  • @j3bb9z
    @j3bb9z 11 місяців тому +1

    51:30 Szkoda, że nie zasugerowali się typescriptem i nie pozwolili zrobić `public class User(public Guid Id, private string Email)`

    • @DevMentorsPL
      @DevMentorsPL  11 місяців тому +2

      O! To w sumie ciekawa uwaga i chyba z dwojga złego byłoby bardziej czytelne. Pytanie też jak z samą implementacją🤔

  • @ShagohadPL
    @ShagohadPL 11 місяців тому +3

    Po utworzeniu nowego projektu pierwsze co robię to właśnie "włączenie" Nullable Types jeżeli są nie ma.

  • @xhypnotizex1835
    @xhypnotizex1835 11 місяців тому +5

    Hehe studiuje już 2 rok Informatykę, na uczelni akurat ciśniemy .NET'a i zastanawiam się dlaczego wcześniej was nie znalazłem. Zadziwiające jest to, że mimo małych liczb robicie bardzo wysokiej jakości materiał :)

  • @rulff
    @rulff 11 місяців тому +1

    Chcemy EFa! :D

  • @zaspany0
    @zaspany0 11 місяців тому +1

    Ciekawy kanał, trochę ciężki dla starszych bo co 7 wyrażenie niepopolsku😀 Ale kursy też macie ciężkie (zaawansowane) . Chętnie posłucham o Blazor.

    • @DevMentorsPL
      @DevMentorsPL  11 місяців тому +2

      Nawyki i wyrażenia zostały po przejściu z kanału anglojęzycznego na polski😅 Będziemy z tym walczyć💪 Co do Blazora, niewykluczone, że materiały o nim pojawią się na kanale🫡

  • @pd5711
    @pd5711 11 місяців тому +1

    Co do keyed services - widzicie zastosowanie innego argumentu w metodzie niż string ?

    • @slepcu
      @slepcu 11 місяців тому +1

      Enum ?

    • @DevMentorsPL
      @DevMentorsPL  11 місяців тому +1

      myślę, że w pierwszej kolejności Type (często jednak resolve jest na bazie typu np. komendy) no i pewnie enum

  • @MarcinSzczygie
    @MarcinSzczygie 11 місяців тому +3

    Spróbowałem nullable types i jest OK - kwestia przestawienia mindsetu. Natomiast wyłączam implicit usings.

    • @DevMentorsPL
      @DevMentorsPL  11 місяців тому +2

      Dużo osób poleca, więc chyba musimy ponownie spróbować polubic sie z nullable types. 👌
      /Michau

  • @CadillacLizard
    @CadillacLizard 11 місяців тому +1

    ale wybiadolicie jezu
    ludzie nie mają czasu - gadajcie konkrety

  • @emadali1906
    @emadali1906 7 місяців тому

    Please allow captain so we can utilize translation

  • @muczos
    @muczos 11 місяців тому

    U nas w projekcie też korzystamy z Nullable Reference Types. Ogólnie nie od razu - wiec były poźniej ból przejścia. Ale jak już przeszliśmy na to widze w tym duzo wartosci.
    BTW. Co to za theme w riderze?

    • @DevMentorsPL
      @DevMentorsPL  11 місяців тому

      One Dark - na discordzie linkowaliśmy jara do zaimportowania ;)

  • @user-og7ko2fo8e
    @user-og7ko2fo8e 11 місяців тому +1

    Tak, wyłączyłem nullable types :D

  • @SZTUKAHARDKORU
    @SZTUKAHARDKORU 7 місяців тому

    byloby i spoko zeby nie ten angielski wcisniety na sile gdzie tylko mozliwe, najwiekszy minus tej branzy

  • @jakubmarcickiewicz774
    @jakubmarcickiewicz774 11 місяців тому +1

    Ja używam blazora.

    • @DevMentorsPL
      @DevMentorsPL  11 місяців тому

      Do zewnętrznych czy wewnętrznych aplikacji? Jak Wam się sprawdza? 🤔
      /Michau

  • @vKarter
    @vKarter 11 місяців тому

    Co to za czcionka i kolory ? Theme jakis ?

    • @DevMentorsPL
      @DevMentorsPL  11 місяців тому +1

      One Dark UI - na discordzie był wrzucany motyw do zaimportowania

  • @Hudypna
    @Hudypna 11 місяців тому +4

    Materiał byłby fajny gdyby nie trwał 2h... ponad połowa czasu to dygresje, osobiste odczucia, opisy z przeszłości, wtrącenia z innych języków programowania, ponglisz. Bardzo ciężko było tego słuchać a samych faktów po 3 zdania, gdy już dochodzimy do opisu kodu to na ekranie nic się nie dzieje, nie wiadomo o której części mówicie. To bardziej podcast dla ludzi, którzy nie mają co robić z czasem niż opis nowych funkcjonalności.

    • @DevMentorsPL
      @DevMentorsPL  11 місяців тому +6

      To nie oglądaj👍 Na wstępie wyraźnie zaznaczyliśmy, że nie będzie to czerstwe przechodzenie po ficzerach tylko opinia umotywowana doświadczeniem. Czekamy na twój materiał skoro masz takie doświadczenie na YT. Na pewno będzie warto.

    • @TurboBorsuk
      @TurboBorsuk 11 місяців тому +4

      @@DevMentorsPL koledzy widzę doświadczenie zdobywali na Elektrodzie :)

    • @Hudypna
      @Hudypna 11 місяців тому +5

      ​​@@DevMentorsPLkomentarz na poziomie przedstawionego materiału, widać że Panowie nie potrafią odnieść się do uwag lub krytyki - słabo. Poza tym gdzie ktoś mówi o doświadczeniu na YT? Po co miałbym coś nagrywać? Doświadczenie mam w IT (nie przed kamerą), większe niż obaj Panowie razem wzięci, może dlatego nie atakuję tylko rozmawiam gdy ktoś zwraca mi na coś uwagę. Zabraliście się za nagrywanie i jutuby to chyba jesteście gotowi na komentarze wszelkiej maści, prawda?
      No cóż... "mentorzy" tak się nie zachowują.
      #unsub

    • @Hudypna
      @Hudypna 11 місяців тому +1

      ​@@TurboBorsukzłoto 😂

    • @nico-toscani
      @nico-toscani 11 місяців тому

      +1

  • @Dacusx
    @Dacusx 11 місяців тому

    Po przekroczeniu seniority, nie jest common sense żebyście zaczęli gadać po polsku? Tego się nie da oglądać. Mam nadzieję że będzie to taki way to go. Dla mnie to byłby gamechanger.

  • @drakon660
    @drakon660 11 місяців тому +2

    Primary constructor - no f... way