Month: September 2017

Droga przejścia na F# z projektu pisanego w C#

Posted on Updated on

Jak należy przepisać istniejący kod (nie wszystko należy przepisać, ale na pewno nowy kod w C# powinien być pisany w oparciu o to) w C#:

– proste struktury danych muszą być immutable
– złożone struktury danych (zawierający kolekcje innych struktur) “powinny” być immutable (nie mam jeszcze na tyle doświadczenia, żeby stwierdzić czy bardziej “muszą” czy “powinny”)
– kod powinien być pisany bez for i foreach a zamiast tego z użyciem LINQ (Select, Zip, SelectMany, Concat, itd…)
– świat bez nulli – wytłumaczę później

Advertisements

Sposób na wyrugowanie nulli z projektu

Posted on Updated on

null to zło: https://www.infoq.com/presentations/Null-References-The-Billion-Dollar-Mistake-Tony-Hoare

A teraz jak sobie z tym radzę:
– nigdzie explicite nie tworzyć null
– uczynić wszystkie obiekty immutable z konstruktorem mającym Guardy przeciw null, zapobiegnie to inicjalizowania nullami gdy nic nie zostało ustawione explicite
– uważać na metody LINQ typu FirstOrDefault(), więc albo unikać “OrDefault”, czyli korzystać z First(), Single(), albo odpowiednio zająć się sytuacjami gdy jednak ten defaultowy null może być przekazany
– Guardy na input z zewnętrz do naszych serwisów, chodzi o wywołania naszego kodu przez kod kliencki (ale gdyby to miał być UI to sytuacja jest analogiczna – nie wpuszczać nulli).

Przeoczyłem coś oczywistego?
Czy może ktoś uważa, że to jest naiwnie zbyt proste i się nie uda.

Pomysły na kolejne posty

Posted on Updated on

Taka moja lista TODO:

* Kod before/after gdy unikamy powtarzania kodu wewnatrz if i else. Może obrazek z gitk. no i kod swoją drogą.

* Kod before/after, przekład gdy zamiaste filtrować dane przed wejściem do metody (i mieć customowego Guarda), zrobić to już w środku. Odpada test.

* Testy których nie pisać – powielanie Guardów, czy nulle, czy wartości >=0

* Co to jest Guard.

* Przetłumaczenie https://www.lucidchart.com/techblog/2015/08/31/the-worst-mistake-of-computer-science/

* Filmik o:
* Jak w gicie poprawić instniejący commit: wycofać commita, z poziomu SourceTree wybrać tylko to co istotne i zrobić nowego commita.
* jak zrobić poprawne “git pull –rebase” i jak wygląda gdy ktoś to źle zrobił.

* Przenieść (i zamienić stary na linka)
* https://dzienwpracy.wordpress.com/2016/08/17/okazjonalne-regularne-czyszczenie-kodu-resharperem/

Dan North – Decisions, Decisions

Posted on

Ciekawsze kawałki:

Developer vs Tester perspective on testing


do 15:26

WIP