Kiedy starałem się o pracę w Internet Center Polska półtora roku temu, w ramach kwalifikacji zostałem posadzony przed komputerem i dostałem za zadanie napisanie w PHP panelu do zarządzania prostą, jednotabelową bazą danych. Dziś byłbym w stanie to zrobić w ciągu kilkunastu minut i całość zawrzeć w pięciu liniach kodu.
Od roku coraz większą popularnością cieszą się frameworki implementujące CRUD jako przezroczystą automatykę, rewolucję zaczął znany dziś wszystkim silnik Ruby on Rails. Cała idea polega na odseparowaniu właściwego kodu aplikacji (model, kontroler) od warstwy najniższego rzędu, odpowiadającej za przechowywanie danych (storage). Ta ostatnia jest obsługiwana automatycznie przez silnik, wystarczy zatem stworzyć odpowiednie tabele w bazie danych i zadeklarować wzajemnie relacje pomiędzy obiektami — sprowadza się to do dopisania właściwych słów kluczowych do klasy modelu.
Po krótkim prototypowaniu połączeń, silnik staje się zupełnie przezroczysty. Można wykonywać dowolne operacje na instancjach poszczególnych klas, a każda zmiana zostanie natychmiast odzwierciedlona w zawartości bazy danych. Odpada konieczność pisania zawiłych zapytań SQL, wzrasta też elastyczność kodu (staje się niezależny od struktury poszczególnych tabel — po dodaniu nowego pola, nie ma potrzeby modyfikacji kodu odpowiedzialnego za obsługę tabeli).
Oczywiście, Rails nie jest jedynym frameworkiem tego typu. W jego ślady poszli deweloperzy korzystający z innych języków programowania. Dziś szkielety podobnych lub identycznych rozwiązań dostępne są dla większości z popularnych języków. Najczęściej stosowany w aplikacjach małego i średniego kalibru, PHP, ma ich nawet kilka. Szczególnie interesujący jest jednak jeden z pierwszych, dostępny od zeszłego roku CakePHP — tutaj nawet słowa kluczowe (w PHP reprezentowane przez zmienne) są żywcem zaczerpnięte z pierwowzoru.
Kiedy warto stosować CRUD? Odpowiedź jest prosta — kiedy tylko się da. Oczywiście, nikt nie zbuduje w ten sposób wydajnego systemu bankowego, ale większość tworzonych aplikacji to rozwiązania z niższej półki — aplikacje ekstra-/intranetowe, systemy CMS i dynamiczne witryny internetowe. Biorąc pod uwagę, że proces tworzenia oprogramowania ulega kilkunastokrotnemu skróceniu i staje się bardziej odporny na błędy, korzyści są nie do odrzucenia.
Technorati Tags: webapp, code, crud, ruby, rails, php, framework