Czy na pewno potrzebujesz tego frameworka?
Frameworki i biblioteki są (i prawdopodobnie jeszcze długo będą) gorącym tematem. Niektórzy programiści poświęcają więcej czasu na badanie i ocenę potencjalnego frameworku niż na pracę z jego pomocą, a jeszcze inni sięgają po nowe biblioteki, gdy tylko napotkają jakiś problem. W tym artykule omówię niektóre zalety i wady korzystania z bibliotek i frameworków.
Czym są frameworki i biblioteki
Zacznijmy od tego, co to framework lub biblioteka. Internet jest pełen definicji i niektóre z nich zakładają, że zastosowanie zasady odwrócenia sterowania jest główną różnicą między tymi dwoma pojęciami. Inne zaś twierdzą, że biblioteka jest zbiorem metod specyficznych dla zadania, a framework to zbyt szeroki termin, który mógłby oznaczać tyle, co biblioteka, zbiór bibliotek lub coś jeszcze bardziej zawiłego.
Na potrzeby tego artykułu wszyscy musimy mieć na uwadze, że zarówno biblioteka, jak i framework, są zbiorami metod mających na celu przyspieszenie rozwoju i wyodrębnienie typowych lub złożonych zadań.
Zalety frameworków i bibliotek
Zobaczmy, co dobrego właściwie użyty framework lub biblioteka może przynieść naszemu projektowi.
Prototypowanie
Jeśli robisz szybki Proof of Concept i chcesz pokazać, że Twój pomysł jest wykonalny, framework może przyspieszyć pracę i dostarczyć aplikację gotową na produkcję szybciej, niż gdy napisze się kod samemu. Jeśli uda Ci się pozyskać innych do zespołu i wprowadzić ten pomysł na rynek, możesz zdecydować, czy chcesz zachować zależność, czy opracować własne, niestandardowe rozwiązanie.
Szybszy rozwój
Framework może się przydać, jeśli aplikacja wymaga ogromnego nakładu pracy. Załóżmy, że tworzysz aplikację, która wyświetla wiele różnych danych za pomocą wykresów. Opracowanie kodu wyświetlającego różne wykresy może zająć programistom trochę czasu, więc możesz wybrać framework innej firmy, aby skrócić czas potrzebny na pokazanie czegokolwiek.
Może to być również wezwanie do uzyskania kompetencji lub zasobów finansowych. Wdrażając usługę polegającą na mapach wyświetlających informacje użytkownikom, bardziej sensowne jest używanie ustalonego zestawu SDK niż wynajmowanie całego działu do tworzenia własnych map.
Testowany i dopracowany kod
Niestety nie wszystkie z dostępnych bibliotek i frameworków są aktualizowane, iterowane i obsługiwane na bieżąco. J eśli biblioteka ma już stałą bazę użytkowników i istnieje od jakiegoś czasu, jest duże prawdopodobieństwo, że została ona dopracowana kilka razy. Błędy zostaną zgłoszone, a wiele z nich zostanie wyeliminowanych w najnowszych wersjach. Jest to fakt, który należy rozważyć przy wyborze frameworku.
Wady
Wady korzystania z dowolnych frameworków i bibliotek można w zasadzie streścić jednym słowem: ryzyko.
Wszystkie zewnętrzne zależności wiążą się z ryzykiem i należy je dokładnie rozważyć przed podjęciem decyzji o wyborze frameworku dla aplikacji.
Brak wsparcia
Wspomnieliśmy o tym w sekcji poświęconej zaletom, ale z perspektywy używania przetestowanego i dojrzałego kodu. Na drugim końcu spektrum znajdują się frameworki i biblioteki, które zostały porzucone przez ich autorów, a zatem nie otrzymują odpowiednich aktualizacji. To problem, bo języki ewoluują i frameworki będą wtedy pełne słabości. Możesz w końcu zbudować aplikację na podstawie frameworku, który ostatecznie uniemożliwi prawidłowe jej utrzymanie, a zastąpienie go w późniejszym czasie może kosztować mnóstwo czasu.
Duże zmiany w API
Ponieważ nie kontrolujesz frameworka, nie kontrolujesz również zmian wprowadzanych w API. Możesz znaleźć się w sytuacji, gdy musisz przeprowadzić migrację do nowszej wersji języka (co jest szczególnie odczuwalne w świecie Swift, w którym spędzam najwięcej czasu). Autorzy frameworka mogą pomyśleć, że punkt przerwania między dwiema wersjami językowymi to idealny czas na wprowadzenie większych, przełomowych zmian w API, a w końcu trzeba będzie naprawić interakcje z frameworkiem po migracji. Niefajnie, co?
Rozmiar aplikacji
Za każdym razem, gdy używasz frameworka, aplikacja zwiększy się o całą zależność, nawet jeżeli potrzebujesz tylko ułamka dostępnych funkcji. Jest to jeszcze ważniejsze dla programistów, którzy mają tendencję sięgania po biblioteki i frameworki, gdy lekko im się nie chce lub nie chcą spędzać czasu na zastanawianiu się, jak rozwiązać problem.
No więc, czy naprawdę potrzebujesz frameworka i biblioteki?
Zależy to oczywiście od Ciebie i sytuacji. Osobiście uważam, że wielu programistów zbyt szybko szuka bibliotek, zanim zastanowią się, czy naprawdę ich potrzebują.
Dla mnie najlepszym sposobem na podjęcie decyzji jest wyjście z założenia, że nie potrzebuje się takiej zależności i dojście do wniosku, że „a może jednak". Można tego dokonać, wskazując na oszczędność czasu i/lub kosztów albo fakt braku kompetencji do utrzymania funkcji.
Pamiętaj, że „mogę nie mieć kompetencji” to nie to samo co "nic teraz nie wymyślę, czas na framework". Istnieje różnica między umiejętnościami, których mogę się nauczyć za pomocą kilku wyszukiwań w Google, a umiejętnościami wymagającymi miesięcy lub lat nauki. Nie pozwól, aby lenistwo podejmowało te decyzje za Ciebie.
Oryginał tekstu w języku angielskim przeczytasz tutaj.