Biblioteki na każdą okazję

Muszę przyznać, że uważam pracę programisty za mocno powtarzalną. Nie ma się co oszukiwać, jak pracuję w firmie tworzącej software to potrzeby klientów zazwyczaj są bardzo podobne. Często tworzy się niemal identyczne rozwiązania ze zmienionymi logotypami firmy i kilkoma szczegółami. Mam wrażenie, że w pracy programistów webowych jest to szczególnie widoczne. Kiedyś dyrektor znanej warszawskiej firmy informatycznej powiedział mi „Przykro mi Kajetan. Trzeba się przyzwyczaić do tego, że praca web developera to w 90% klepanie CRUDów, a w 10% robienie czegoś ciekawego.” Sam wcześniej doszedłem już do tych wniosków, ale kiedy wypowiedział to ktoś inny to niestety nabrało to jeszcze większej mocy. W związku z tym w każdym projekcie w którym mam moc decyzyjną używam kilku standardowych bibliotek. Nie czynią one mojego projektu przyjemniejszym, czy bardziej ciekawym, ale ułatwiają sporo, a także pozwalają zrobić i się nie narobić.

 

Entity Framework – chyba najbardziej oczywisty wybór (dla mnie) przy każdym projekcie korzystającym z bazy danych. Sposób użycia tego ORMa opisywany był już miliard razy na wszelkich portalach, blogach, forach, książkach itp. Dzięki temu znalezienie rozwiązania ewentualnego problemu to kwestia kilku chwil. Dodatkowo możliwość wygenerowania diagramu ukazującego model bazy danych nieraz pomagał w zarządzaniu projektem. Sam osobiście jednak odszedłem jakiś czas temu od tworzenia modelu i teraz tworzę kontekst ręcznie. Pozwala mi to na łatwiejszą integrację z kontenerami IoC. Dodatkowo wiem, że jak coś nie działa to jest to moja wina i mimo wszystko łatwiej mi znaleźć źródło problemu.

Do tej pory zawsze korzystałem z podejścia Database First. Tworzyłem sobie bazkę i później odzwierciedlałem tabele w dedykowanych klasach. Ostatnio jednak stwierdziłem, że sporo z tym zachodu i postanowiłem spróbować podejścia Code First. Jak mi to wyszło? Dowiecie się już niedługo 🙂

SimpleInjector – czy jakikolwiek inny kontener IoC to w każdym projekcie must-have. Wzorzec DI wszedł już w moją głowę tak głęboko, że przy nowych projektach nawet się nie zastanawiam czy korzystać czy nie. Kiedyś zastanawiałem się nawet czy samemu nie zaimplementować takiego mechanizmu skrojonego na moją miarę. Szybko jednak odwiódł mnie od tego pomysłu Maciek Aniserowicz w swojej serii postów Cykl DI. Z pisaniem swojego kontenera jest jak z tworzeniem własnego silnika blogowego. Można, wielu się nad tym zastanawia, tylko po co? Rozwiązania na rynku są naprawdę świetne, a jeśli zaczniemy pisać po swojemu to albo zajmie nam to niepotrzebnie dużo czasu, albo po prostu porzucimy ten temat, bo nie będzie nam się chciało go dalej rozwijać.

SimpleInjectora opisywałem już ostatnio. Kontener IoC jakich wiele, ale działa sprawnie, szybko i bezproblemowo. Ma sporo możliwości, które wciąż odkrywam, ale najbardziej podoba mi się to, że konfiguracja jest wręcz ekspresowa. Od użycia w Social Cooking wiem, że ta biblioteka zostanie ze mną na długo 🙂

AutoMapper – tutaj chyba mój ulubieniec. Ileż to się kiedyś nakopałem z tym, żeby z modelu zrobić ViewModel. Przepisywanie za każdym razem wszystkich właściwości w tę i we w tę było moim znienawidzonym zajęciem. Aż tu nagle przez zupełny przypadek napotkałem AutoMappera. Biblioteka, która zajmuje się tym czego oczekuję od bibliotek – sprawia, że ja mam mniej pracy 🙂 Wystarczy, że na początku projektu stworzę klasę AutoMapperConfig, której metodę ConfigureMaps() wywołam w Global.asax, czy Startup.cs i już mogę pięknie zamieniać modele na VM i na odwrót jedną wszystko mówiącą linijką kodu:

DishViewModel newDishVm = Mapper.Map<Dish, DishViewModel>(newDish);

Samo narzędzie jest super-konfigurowalne i naprawdę niewielkim nakładem wstępnej pracy potrafi potem wspaniale wyczyścić kod.

Bootstrap – no i na koniec biblioteka znana chyba wszystkim web developerom. Biblioteka bardzo użyteczna, ale jednak trzeba uważać z nadmiernym jej używaniem. Ostatnio powstała strona Every bootstrap website ever, która w dosadny sposób pokazuje, że nadmierne używanie bootstrapa (a nawet motywów stworzonych na jego podstawie) powoduje powstawanie klonów stron. Stron które wyglądają niemal identycznie, fajnie się przewijają, ale jednak nie niosą ze sobą niczego innowacyjnego. Dlatego ja osobiście używam go głównie do pomocy w uzyskaniu strony responsywnej, takiej która będzie na każdym urządzeniu/przeglądarce wygląda tak jak sobie tego życzę.

Oczywiście to nie wszystkie biblioteki, których używam w swoich projektach. Te tutaj wymienione są jednak podstawą do budowania praktycznie każdej strony. A Wy? Macie jakieś swoje ulubione biblioteki? Być może używacie innych, które spełniają te same założenia co te wymienione powyżej? A może macie inne, których użycie bardzo polecacie? Podzielcie się swoimi doświadczeniami w komentarzach 🙂

 

Related posts