Wpis z mikrobloga

@Zeronader: Tak, ternary expression to piękna nazwa na zakodowanie ifa w formie x >= y ? a : b. Pod względem optymalności - nic to nie da. Ale za to jest czytelniejsze. Teraz masz długiego klejonego stringa, w którym masz jeszcze wyrażenia warunkowe, gdyby nie to, że sam to napisałeś - miałbyś problem to rozczytać.
@MattePRL: No właśnie kiedyś się używało string.Format() i tam to lepiej wyglądało, a od .NET 4.5 chyba właśnie weszło takie wyrażenie $"" gdzie się dokleja zmienne poprzez {} i w sumie używam bo fajne, ale jakby ktoś miał mi zobaczyć to gówno by się odczytał :p
@Zeronader: @MattePRL:
zgodze sie z tym, jesli to jest metoda to nie ma sensu wrzucac ternary expresion (ktore ogolnei lepiej wygladaja jak jest krotkie, do ogarniecia jednym spojrzeniem), szczegolnie ze to jest krotka metoda
@Zeronader: Heh, o czytelności kodu mówi ktoś, to napisał coś takiego....

1. Nieczytelna konkatencja w jednej linii.
2. Magiczne cyfry (co to oznacza 20 i 19)?
3. Nielogiczność na pierwszy rzut oka: Po co substring?
4. Czemu data jest zależna od kultury użytkownika?
@ogrod87: To override ToStringa, a 20 i 19 zależy odemnie, bo wiem do czego będzie użyte.
a tutaj mi chodziło właśnie o to ,że pewnie jabym to robił plusami to by było bardziej czytelne, chyba nie zrozumiałeś ;c
@Zeronader: zrozumiałem. Ale skoro chcesz mówić o czytelności kodu - sam pisz go czytelnie.
I powiedzenie "wiem, o co tutaj chodzi" - niejeden programista na tym podejściu się przejechał, więc radzę Ci pisać taki kod, do którego siądziesz za rok i będziesz dalej wiedział o co tutaj chodzi.
Nie mniej jednak ten kod jest na tyle prosty, że każdy widzi o co w nim chodzi.


@Zeronader: Ok, po tym widzę, że nie ma co z Tobą rozmawiać ;) Mam wystarczająco lat doświadczenia w koderce, u siebie w zespole jestem odpowiedzialny za code review, więc raczej wiem o czym mówię.

Jest wiele przypadków, że wiadomo o co chodzi, a można się przejechać, bo potem myślisz "co za #!$%@? #!$%@? tak
@Zeronader: Cytat akurat nie był do Ciebie, tylko z doświadczenia.

Podziel tą operację na dwie linijki.
Zamiast 20, możesz zrobić np. const int maxDescriptionLength = 20 i zmiennej użyć w pierwszej linijce.

const int maxAllowedDescriptionLength = 20;
string crimeDescritpion = description;

if(crimeDescritpion .Length > maxAllowedDescriptionLength) //Tu można dodać zabezpieczeni o nulla
{
crimeDescription = description.Substring(0,maxAllowedDescriptionLength -1);

}

return $"{CrimePlace}...";


I tak siadając za pół roku do kodu wiesz już o co
@Zeronader: mireczku ale jak upychasz logikę z prezentacją w jednym miejscu to tak się kończy. generalnie ja nie lubię mieć czegokolwiek bardziej zaawansowanego w returnie niż zwrócenie wyniku jakiejś innej metody lub samej zmiennej np:
return myCollection.First();
lub
return computationResult;
jakbyś rozbił tego ifa do jakiejś zmiennej to kod by strasznie dużo zyskał na czytelności
kolega @ogrod87 daje dobre rady również
te zasady są raczej rozprzestrzenione na wszystkie obiektowe języki aczkolwiek jest kilka kursów na pluralsight (za darmo 6mcy na mirko chłopaki postsują) odnośnie code review dla c# konkretnie.