„CSS. Refaktoryzacja kodu” – moim okiem

Zarządzanie arkuszami CSS bywa trudne, a dla wielu zespołów style są po prostu nieprzyjemnym obowiązkiem, spychanym na boczny tor. Czy „CSS. Refaktoryzacja kodu” jest remedium na ten problem? Wątpię…

Jakiś czas temu ponownie udało mi się trafić na promocje w Helionie, w której ebooki były przecenione o 50%. Z nowości wpadła mi w oko pozycja: CSS. Refaktoryzacja kodu, ponieważ była dość tania, a tytuł był zbieżny z tym, z czym miałem do czynienia w poprzedniej pracy (do teraz mam CSSowe koszmary senne). Całość ma 168 stron więc książeczka idealna do pochłonięcia w jeden weekend. No i kupiłem, a teraz stwierdzam, że to nie był najlepszy pomysł.



Przede wszystkim książka jest jeszcze krótsza niż można się na początku spodziewać, ponieważ wstęp to jakieś 16 stron i drugie tyle to końcówka, w której autor umieścił kod normalize.css. Do tego pojawiają się w książce dość długie listingi kodu CSS, co również skraca ilość właściwego „mięska”. No ale nie czepiajmy się „dodatków” i zacznijmy po bożemu od pierwszego rozdziału, a ten sprawia nam przykrą niespodziankę. Otóż autor omawia w nim czym jest refaktoryzacja. Pomijając już fakt, że biorąc książkę o refaktoryzacji CSSa wydaje mi się, że jestem świadomy terminologii, ale przedstawianie w niej sporych listingów na przykładzie JavaScriptu, jest mocnym nieporozumieniem. Ok można oczywiście nawiązać do jakiegoś innego języka, ale czy przykłady muszą zajmować tak dużo miejsca? Nie da się już pokazać refaktoryzacji kilku prostych funkcji? W ten sposób zanim w ogóle zobaczymy w książce CSSa, mija kolejne 15 stron i pozycja zaczyna się już robić na prawdę skromna.

Im dalej w las tym nieco ciekawiej

Po pierwszym rozdziale jest nieco lepiej, ponieważ w dalszej części autor opisuje kaskadę i robi to dość sprawnie. Rozdział jest krótki lecz treściwy. Potem opisywane są takie rzeczy jak np. prefiksy dla właściwości, które nie są wspierane przez wszystkie przeglądarki. Brakuje mi tutaj nawiązania do autoprefixera, który pozwala zapomnieć o pilnowaniu prefiksów. W kolejnych stronach autor omawia sposoby pisania lepszego CSSa, czyli znajdziemy tutaj informacje m.in. o tym, że powinniśmy używać klas zamiast identyfikatorów. I to jest ok, ale właśnie tutaj brakuje mi nieco więcej przykładów i dokładniejszego opisania dlaczego tak, a nie inaczej. Zdecydowanie wolałbym żeby autor poświęcił temu rozdziałowi więcej miejsca, kosztem refaktoryzacji JavaScriptu.

W dalszym rozdziale mamy sporo informacji na temat stylowania konkretnych elementów HTMLa, np. formularzy. Tutaj najciekawszym elementem jest opis nazwany stylami komponentów, ponieważ jest to przykład składania poszczególnych styli komponentów z atomów, co faktycznie ma odzwierciedlenie w rzeczywistych projektach (chociażby popularny Bootstrap ma podobnie opisane style). Długie listingi niepotrzebnie wydłużają ten rozdział, po czym kończy się on niespodziewanie, nie wspominając w ogóle o takich podejściach jak BEM czy OOCSS. Rozdział o testowaniu CSSa nieco wynagradza nam ten brak, ponieważ opisuje narzędzia, które mogą wspomóc dalszy rozwój wyglądu aplikacji, np. poprzez wizualne porównywanie screenów z poszczególnych części aplikacji. Ostatni rozdział jest tak na prawdę podsumowaniem tego co zostało w książce już opisane, z dodaniem kilku informacji na temat łączenia plików CSS, czy też minifikacji. Tutaj niestety także zabrakło konkretnego przykładu, opisu dostępnych na rynku narzędzi itp.

Podsumowanie

Podsumowując w kilku zdaniach. Wydaje mi się, że chyba źle zrozumiałem tytuł zaproponowany przez polskiego tłumacza. I bardzo możliwe, że tak właśnie jest, ponieważ angielski tytuł brzmi w całości: CSS Refactoring: Tune Your Style Sheets for Performance. Ja oczekiwałem sposobów radzenia sobie ze sporą ilością styli, a dostałem pozycję dla osób bardzo początkujących, którzy potrafią pisać style CSS, ale nie znają jeszcze podstawowych/dobrych zasad pisania skomplikowanych selektorów. Ogólnie rzecz biorąc książka nie jest zła, ponieważ wskazówki autora są przydatne i rzeczywiście mogą wspomóc strukturyzację styli w projekcie. Jest to także moja pierwsza książka o CSSie w której ktoś poruszył temat testowania styli, co jest fajną ciekawostką. Niestety książka pomija baaaardzo wiele współczesnych podejść do zarządzania CSSem, począwszy od metodologii pisania (brak jakiejkolwiek wzmianki np. o BEM, SMACSS, OOCSS), po podział styli na moduły (np. importowanie styli za pomocą webpacka). Autor zapomniał także o preprocesorach, które kilka z przytoczonych przez autora rozwiązań mogą znacznie ułatwić, wpływając na szybkość pisania styli. Objętość tej książki również mogłaby być mniejsza o jakieś 33%, za dużo obszernych listingów i zbędnych dodatków. Ode mnie takie naciągane 3/5, głównie za cenę.