MVC? A ćo to?

MVC w pełnej formie Model-View-Controller, czyli po polskiemu Model-Widok-Kontroler. Jest to wzorzec projektowy który służy organizacji kodu, oraz wpaja dobre maniery w programowaniu. Nikt nie lubi czytać kodu który nagle robi zapytania do bazy danych, przelicza wszystko i kończy się dyrektywą echo w jednej linii … Sam wzorzec nie jest obowiązkiem ani niczym bardzo sztywnym. Jest to kanon dobrych zasad który ma pomóc programiście w zachowaniu porządku. Jeżeli nie widziałeś jeszcze stanowiska pracy programisty to wyobraź sobie chaos gorszy niż masz aktualnie w pokoju, następnie pomyśl że miało by tak wyglądać ok. 10 tys. linii niezrozumiałego Ci języka i masz znaleźć błąd. Nierealne? No jasne że nie, dlatego inteligentni ludzie podzielili aplikację na segmenty.

Nie o sam porządek oczywiście chodzi, ale o pracę grupową. Wyobraź sobie sytuację w której masz 40 programistów i tylko 1 plik nad który każdy by miał pracować. (tak, są rozwiązania cloud, ew. oparte o node.js które to umożliwiają) Jak tutaj pogodzić taką pracę? Wzorzec MVC rozwiązuje ten problem. Front-Developer dostaje do zabawy widok, a programiści modele i kontrolery.

MVC

  1. W widokach dbamy o to żeby użytkownik zobaczył interesujący go zbiór danych oraz mógł zachodzić z nim w interakcję. Jest to nasza pierwsza linia obrony przed głupotą użytkownika i już z tego poziomu możemy zabezpieczyć częściowo aplikację przed popsuciem. Na czym to polega? Na stosowaniu walidacji wpisywanych przez użytkownika danych, oraz robieniu wszystkiego żeby nie dopuścić do popełnienia czynu debilizmu informacyjnego.
  2. W kontrolerach przetwarzamy otrzymane dane, sprawdzamy czy wszystkie typy się zgadzają, czy ciąg znaków nie zawiera w sobie SQL Injection, skryptów wykonywalnych albo innych świństw które są afeee. Następnie wywołujemy funkcje przeliczające w modelach.
  3. Model jest to inaczej klasa która odzwierciedla całą logikę naszego problemu. Obrabia nam ona finalnie dane otrzymane z kontrolera, tworzy przeliczenia, zarządza bazą danych, zapisuje  odczytuje dane.
  4. Dane bądź statusy z modelu trafiają ponownie do kontrolera, który decyduje co należy wyświetlić użytkownikowi.

Takie działanie, jak wszystko, ma swoje zalety i wady. Niewątpliwie pozwala zachować porządek i logikę aplikacji. Wspiera pracę grupową, oduzależnia nam back-end od front-endu dzięki czemu wystarczy zmienić grafikę i mamy ‚nową aplikację’. Łatwiej przebudowywać widoki w celu uzyskania optymalnego interfejsu użytkownika niż cały kod który zawiera w sobie logikę biznesową.

Do minusów tego rozwiązania należy złożoność aplikacji. Chcąc poprawić błąd trzeba całkiem nieźle poszukać psującego się elementu w kodzie. Kolejnym minusem są zmiany w modelu. Jedna zmiana może zepsuć prawie całą aplikację, a dokładnie kontrolery i wykonywane w nich akcje, co przełoży się na widoki.

Kasztelan Paweł

Programista samouk, zakochany w ZF i Laravel, szerzący opinię że PHP + JS + HTML + CSS to są języki w których może zostać stworzona aplikacja równie dobra, a nawet lepsza od twardego klienta.