nullable enable, x is { } syntax

0

Co sądzicie o użyciu tego syntaxu is { Something: something } - nie wygląda to trochę przekombinowanie? lub ogólnie co sądzicie o całym patchu z nullable ref types?

10:37

1

Mało czytelne. Ewidentnie na siłę próbują coś, gdzieś wcisnąć. Może akurat ten przykład jest kiepski.

if (person?.MiddleName is { } middle) return middle.Length;

//Jeśli dobrze rozumiem to to jest to samo co:

if (person?.MiddleName != null) return person?.MiddleName.Length;

Ale VS marudzi, że porównujemy string do null stąd trzeba było "wymyślić" to pierwsze?
Już samo porównanie do { } jest nieczytelne, co to niby jest, obiekt pusty, niepusty? Nagle można w nim zmienne deklarować... Chyba w złym kierunku to zmierza.

2

Myślę, że imię tego gościa opisuje najlepiej kierunek, w jakim to zmierza.

1

nullable ref types mi się bardzo podobają, do property patterns mi się mózg jeszcze nie przyzwyczaił więc boli jak na to patrze. Aczkolwiek jest to o tyle dobre że składnia na pierwszy rzut oka wygląda bardzo podobnie do object destructuring z java scriptu.

Biorąc pod uwagę że js nigdzie sie z frontu póki co nie wybiera, to fajnie że znacznie bliżej jest c# do js niż javie do js.

0

Nawet jeśli wygląda na przekombinowanie to co? Będzie to kolejna zabawka.

2

Praktycznie dokładnie tak samo działa to w Kotlinie (https://kotlinlang.org/docs/reference/null-safety.html) i jestem bardzo zadowolony - wreszcie broń na Nulltystów.
(jest T?,x!., x?. i tylko :? zamiast ?? ).

Ogólnie najlepiej nulli nie robić - ale dzięki temu wynalazkowi mogę się odciąć od razu na wejściu i przy korzystaniu ze starych bibliotek. Tylko w tych (brzegowych) kawałkach kodu te nullchecki i dziwaczne operatory występują.

Efektem ubocznym jest wyczyszczenie kodu biznesowego z bzdurnych null checków, bo jak nie ma nulli to nie ma po co sprawdzać.
W piatek dostałem kod w javie (java nie ma tego ficzura) , gdzie autor przesadził ze sprawdzaniem null - na każdy argument odpowiedni if -> efekt 60% kodu to null checki.
najlepsze, że on sam jest jedynym gościem, który nulli używa :-) - sam się przed sobą zabezpieczył :-).
W takich momentach się te null safety docenia.

0
neves napisał(a):

Biorąc pod uwagę że js nigdzie sie z frontu póki co nie wybiera, to fajnie że znacznie bliżej jest c# do js niż javie do js.

No jeśli rozwój ma polegać na braniu losowych ficzerów z niezaprojektowanych języków, to to jest jednak znacznie gorsze niż szaleństwo.

Poza tym nie każdy się bawi we frontend, więc podobieństwo do koszmaru z frontendu na niewiele się zda.

0

10:47 facetowi wyraźnie się nie podobają nawiasy w if (!(jakieś wyrażenie)) return cośtam;. No mi też się nie podobają. Ale zamiast wymyślać jakieś nowe konstrukcje można było po prostu pozwolić na coś takiego:

if !(jakieś wyrażenie) return cośtam;

czyli dodać instrukcję if ! działającą dokładnie odwrotnie niż if.
Dziękuję za uwagę.

PS. jeśli chodzi o tego potworka którym koleś się tak chlubi:

return person?.MiddleName is { Length: var length } ? length : 0;

to uważam że Lua robi to lepiej:

return person and person.MiddleName and person.MiddleName.Length or 0;
0

Rust ma coś takiego:

if let Some(person) = person_opt {
  return person.middle_name;
}
1

@Wibowit: W C# odpowiednikiem byłoby chyba coś takiego.

if (person_opt is Person p) 
{
    return p.middle_name;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1