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
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
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.
Myślę, że imię tego gościa opisuje najlepiej kierunek, w jakim to zmierza.
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.
Nawet jeśli wygląda na przekombinowanie to co? Będzie to kolejna zabawka.
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.
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.
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;
Rust ma coś takiego:
if let Some(person) = person_opt {
return person.middle_name;
}
@Wibowit: W C# odpowiednikiem byłoby chyba coś takiego.
if (person_opt is Person p)
{
return p.middle_name;
}
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.