Month: September 2015

Łamanie enkapsulacji w klasach testowanych

Posted on Updated on

Oglądałem jeden z odcinków o testach by Seemann na Pluralsight.

Autor nie widział nic złego w udostępnianiu publicznie wstrzykiwanych zależności lub danych. Ułatwia to testowanie, lecz niestety łamie zasadę enkapsulacji. Nie jest to jednak złe ponieważ gdy korzystamy z interfejsow (a nie wyobrażam sobie żeby było inaczej) to w kodzie produkcyjnym nie będziemy mieli do tego dostępu. Oczywiście nie robimy hacków z castowanie itp. Wtedy takie udostępnione dane mogą być dotykane tylko w testach i może dzięki temu kod będzie prostszy.

Update:
Chociaż jak to tak teraz czytam to przypomina mi się inny talk który mówi o tym że to jednak zły design bo cokolwiek pokazujemy na zewnątrz może kiedyś wypłynąć.

Nazywanie zmiennych w lambdach

Posted on Updated on

Czasem się zastanawiam czy zmienne wewnątrz lambd powinny by pisane pełną nazwą czy raczej skracane. Dla porównania dwa poniższe kody:

Mapper.CreateMap<User, UserModel>()
    .MapProperty(target => target.City, source => source.Address.City)
    .MapProperty(target => target.PostalCode, source => source.Address.CityPostalCode);
Mapper.CreateMap<User, UserModel>()
    .MapProperty(x => x.City, src => src.Address.City)
    .MapProperty(x => x.PostalCode, src => src.Address.CityPostalCode);

Jest powszechnie wiadomo że nazwy zmiennych powinny być opisowe, nieskrótowe i nie powinny pozostawiać wątpliwości co do znaczenia w danym kontekście. To wszystko prawda. Zrobiłbym jednak jeden wyjątek.

W przypadku lambd forma skrócona jest lepsza, ponieważ nie chcemy aż tak skupiać się na zmiennej. Chcemy żeby była krótka (x, src) właśnie dlatego żeby nie zastanawiać się za bardzo co ona robi. Myślę o krótkich (jednolinijkowych) lambdach.

Dodatkowym atutem przemawiającym za stosowaniem niednoliterowych zmiennych jest, że w kilkulinijkowych lambdach możemy od razu rozpoznać, która zmienna jest parametrem metody anonimowej stworzonej przez lambdę, a która zmienną zadeklarowaną wewnątrz lambdy lub spoza lambdy (closure).

Znajdź co google ukrył

Posted on Updated on

Google usuwa z wyników wyszukiwania gdy ktoś się skarży na różne rzeczy np łamanie praw autorskich. Gdy wpiszemy “silicon valley season 2 online free” to na dole znajdziemy:

hooli removes movies from search

Klikamy na jednej ze skarg i powinniśmy tam już znaleźć coś czego szukamy.