Od kilku lat w środowisku programistycznym można zaobserwować ogromną ilość nowych frameworków dla większości wiodących języków.
Wielu początkujących programistów ma problem z wyborem właściwego rozwiązania i często staje przed dylematem, czy korzystać ze starych sprawdzonych rozwiązań czy spróbować nowego, aktualnie popularnego rozwiązania, a może napisać aplikację bez użycia gotowego frameworka?
Framework, czyli szkielet do budowy aplikacji
Framework, inaczej nazywany platformą programistyczną jest czymś w rodzaju szkieletu aplikacji. Definiuje strukturę, architekturę, ogólny mechanizm działania oraz dostarcza wiele przydatnych bibliotek, które pomagają w późniejszej pracy nad projektem. Dobra znajomość frameworka bardzo przyspiesza pracę. Nie musimy się zastanawiać nad wieloma aspektami, ponieważ zrobił to już ktoś inny za nas, a my możemy skupić się na problemie, który mamy rozwiązać. Kolejnym atutem jest fakt, że aplikacje pisane na bazie frameworka są do siebie bardzo podobne. Struktura i ogólne mechanizmy są wymuszone przez framework dzięki czemu osobie, która nie jest zapoznana z projektem będzie o wiele łatwiej się odnaleźć, ponieważ wie czego może się spodziewać i gdzie szukać konkretnych elementów aplikacji.
Jakie są główne wady frameworka?
Trzeba jednak pamiętać też o jego wadach. Głównym argumentem przeciwko używaniu tego typu rozwiązań jest fakt, że korzystamy z gotowych fragmentów kodu. Często nie wiemy jak konkretna biblioteka została zaimplementowana, a co za tym idzie nie wiemy jaki wpływ może mieć na nasz końcowy projekt. Dodatkowo narażamy się na sytuację, że biblioteka, której używamy stanie się płatna lub co gorsza wycofana a my zostaniemy bez mechanizmów, które były wykorzystywane w całej aplikacji i będziemy musieli znaleźć alternatywna bibliotekę lub napisać funkcjonalności samodzielnie, co w przypadku dużych bibliotek może być bardzo czasochłonne. I na końcu trzeba pamiętać, że ilość bibliotek, mechanizmów i funkcjonalności bardzo mocno wpływa na prędkość działania naszej aplikacji. Im szkielet aplikacji jest bardziej rozbudowany tym więcej zasobów serwera potrzebuje do poprawnego działania. Z kolei przy mniejszych projektach wielu z tych mechanizmów nie wykorzystujemy i jedynie spowalniamy naszą aplikację.
Kryteria wyboru Frameworka
Jeżeli akceptujemy wady, które niesie ze sobą wykorzystanie frameworka musimy stanąć przed wyborem wielu dostępnych. Przy wyborze powinniśmy kierować się głównie trzema kryteriami:
- Wzorzec architektoniczny, który odpowiada naszym założeniom,
- Społeczność, która w razie problemów będzie mogła nam pomóc,
- Ogólnie przeznaczenie frameworka.
Dla przykładu, spójrzmy na język PHP. Do stworzenia dużej, rozbudowanej aplikacji możemy użyć Laravela. Jest to duży framework napisany w architekturze MVC (Model-View-Controller), bardzo popularny i posiada ogromną społeczność, a co za tym idzie wiele gotowych bibliotek, które możemy szybko zintegrować z naszą aplikacją. Gdy napotkamy problem, to z łatwością znajdziemy jego rozwiązanie lub osobę, która będzie mogła nam pomóc. Problemem pojawia się, gdy chcemy stworzyć API. Jeżeli chcemy, aby działało bardzo szybko, to tak duży framework jest nam niepotrzebny. Wykorzystamy jedynie ułamek jego możliwości, a API które tworzymy niepotrzebnie zwolni. W takim przypadku powinniśmy poszukać innego frameworka, który jest mniejszy, lżejszy i lepiej się nada w tego typu rozwiązaniach np. Lumen.
Ucz się języka, nie frameworka
Powyższe przykłady są oczywiście jednymi z wielu i każdy powinien dobrać rozwiązanie, które najlepiej pasuje do projektu, nad którym pracuje. Trzeba jednak pamiętać, że używanie frameworków do każdego, nawet najmniejszego projektu, nie jest konieczne. Czasem lepszym rozwiązaniem będzie napisanie aplikacji używając czystego języka, co z pewnością wpłynie pozytywnie na jej wydajność oraz wielkość.
Najważniejsze jednak, aby zawsze uczyć się języka, a nie frameworka. Ten może w każdej chwili stać się przestarzały, pojawi się nowy lepszy lub po prostu na potrzeby konkretnego projektu będziemy musieli wybrać inne rozwiązanie. Bez dobrej znajomości danego języka będzie to znacznie trudniejsze.