Wpis z mikrobloga

21/100 dni z książką

Nie zwracamy null.
Nie zliczę widzianych przeze mnie aplikacji, w których niemal każdy wiersz kodu zawierał test wartości null. [...] Gdy zwracamy wartość null, w rzeczywistości tworzymy sobie dodatkową pracę i powodujemy problemy w funkcjach wywołujących. W takich przypadkach brak jednego testu wartości null powoduje, że aplikacja wymyka się spod kontroli.”

[Więcej infomacji]


#feaoftruss #czystykod #programowanie #programista15k #webdev #gamedev

Podobało się? To zaplusuj i zapisz się do wołania (link w stopce)

************

[Chcesz być wołany?]
  • 93
@Flypho: to myślisz troszkę cel tych wpisów (info w spoilerze). To nie jest wpis z cyklu "pracujesz ze #!$%@?ą bazą, mam przepis jak naprawić ją w trzy minuty!", a "Zacząłem czytać "Czysty kod. Podręcznik dobrego programisty", w związku z czym postaram się codziennie wrzucić tutaj kilka zdań, które są ciekawe i może wywołają jakąś dyskusję."
@FEAofTruss:
No to dyskutuję. To jest fajna porada jak ktoś np. pisze aplikacje na Androida w jedno/dwuosobowym teamie i unikanie nulli to bułeczka z masłem, ale jak przychodzisz do jakiegoś korpo, które mieli setki gigabajtów danych na sekundę to jakakolwiek modyfikacja istniejących tabel #!$%@?łaby połowę funkcjonalności 200 z 400 aplikacji i nikt nie wiedziałby w ogóle co się stało xD.
@Flypho: dzięki za głos w dyskusji z tej drugiej strony. Cóż mogę powiedzieć, zacząłem czytać te książkę, bo też na co dzień miałem takie problemy jak Ty:) tylko, że nie z bazami.
nie możemy zakładać, że tak zawsze źle musi być u każdego. Promocja dobrych praktyk raczej nie jest niczym złym, chyba przyznasz?


@FEAofTruss:
Nie, ale zrobienie bazy danych która ma 20 lat, żeby była 'dobrze' to są często wydatki idące w dziesiątki albo setki milionów złotych. Jeśli uda ci się przekonać zarząd takiej firmy, żeby zatrudniła 20 ludzi na lata, żeby doprowadzili bazę do porządku to ja ci wróżę niezły sukces w
@FEAofTruss: Ta książka trochę przesadza w drugą stronę. W jaki sposób zwrócisz błąd wykonania (alternatywa dla nulla)?

Wyjątek? Jeszcze więcej kodu do złapania i zwijanie stosu.

Optional? Pole w obiekcie? Nadal potrzebujesz ifa.

Zwracanie pary obiektów? Nadal potrzebujesz ifa i na dodatek paskudnie wygląda.

Bardzo często jeżeli coś zwraca null to znaczy, że coś się nie udało. Jeżeli coś się nie udało to zwykle nie olewa się takiej sytuacji tylko potrzebujemy
@Flypho: nie chodzi o nie uzywanie nulli, ale o to by biorac GetUser() żeby sprawdzic czy np jest user.IsAuthenticated. Jak zwrocisz Null to dostaniesz exceptionem po pysku jak nie dasz ifa. A jak wrociwz obiekt NullUser ktory zawsze jest not authenticated to nie musisz pilnowac pierdyliarda obiektow ktore nullem mogą byc. Same pola juz nulle moga miec jak sytuacja tego wymaga.

PS. Clean code o projektowaniu baz nic chyba nie mówi
nie chodzi o nie uzywanie nulli, ale o to by biorac GetUser() żeby sprawdzic czy np jest user.IsAuthenticated. Jak zwrocisz Null to dostaniesz exceptionem po pysku jak nie dasz ifa.


@nilphilus:
A potem się okazuje, że null w bazie też ma zaszytą jakąś logikę i oznacza jakiś stan obiektu xD.
@Flypho: no ma, w tym przypadku User jest nieaktywny bo go nie ma. Nie bede sie wypowiadal tez na temat procedur w bazie, bo dla mnie nic z czystoscia wspolnego to niema. Ale nadal mozesz stworzyc obiekt który dba o to zeby w kodzie zredukoqac iloac if(cos == null)