Jestem zwolennikiem minimalizmu. Jeśli coś da się zrobić w prostszy i bardziej zwięzły sposób, to stracę masę czasu, żeby to zrobić. Na krótką metę jest to może mało ekonomiczne, ale na dłuższą mam z tego wiele korzyści. I frajdy.
Grafika pochodzi z Adobe Stock
Mój Alib CyMeS składa się tylko z 7 tablic. Przy czym na bieżąco używam tylko czterech, pozostałe przydają się w specyficznych przypadkach. Ale tak naprawdę liczy się tylko jedna, zawierająca wszystkie dane serwisu - strony, newsy, menu, linki, galerie itp. Pozwoliło mi to nieźle zoptymalizować główną klasę obsługi systemu, bo wszystkie metody odnoszą się do tej jednej tablicy, a różnią się głównie dalszą obróbką odczytanych danych.
Jeśli myślisz o zrobieniu własnego Systemu Zarządzania Treścią, a nie bardzo wiesz, jak się za to zabrać, poniższy opis może pomóc Ci w zaprojektowaniu systemu. Możliwe, że opracujesz jeszcze lepsze rozwiązanie.
Ta jedna tablica wystarczy, żeby utworzyć większość typów danych: menu, strony, newsy, kategorie newsów, linki, pliki, galeria, tagi, komentarze, newsletter. Wystarczy nawet do obsługi prostego sklepu: kategorie, asortyment, zdjęcia, klienci, zamówienia. A wszystko to mogę obsłużyć nieznacznie tylko rozbudowując główną klasę, która zwiera wszystkie potrzebne do tego mechanizmy. Często nawet nie trzeba pisać nowej klasy, tylko przekazać odpowiednie parametry do istniejących metod.
Grafika pochodzi z Adobe Stock
Nie odkryję Ameryki stwierdzeniem, że nie ma programu w 100% bezbłędnych. No chyba, że jest to prosty kalkulator albo wyświetlenie napisu „Hello World” :)
Oczywistością jest też, że im bardziej skomplikowany program, tym więcej błędów. Spójrzcie na częstość aktualizacji Windowsa i ile z nich jest poprawkami krytycznymi, zwłaszcza w zabezpieczeniach. Z Linuxem czy macOS jest trochę lepiej, ale od jakiegoś czasu twórcy IOS też mocno przeginają z wydawaniem aktualizacji, bo ciągle coś się sypie. Aktualizacje większych pakietów oprogramowania (np. Adobe) też częściej łatają błędy niż dodają nowe funkcje. A i tak bywa, że te łaty generują problemy w innych miejscach.
Z sentymentem powracam myślami do dawnych czasów, z 8-bitowymi komputerami. Na moim Atari 65XE nic nigdy się nie zwiesiło, a sporadyczne błędy w grach wynikały z błędnego wczytania ich ze zjechanej taśmy. Chociaż... Kilka naprawdę rozbudowanych gier miało bugi (np. „Spy Master”) to potwierdza regułę, że bardziej skomplikowany program ma więcej błędów. A „Spy Master” podobno aż do bólu wypełniała całą pamięć Atarynki.
Wtedy nie było tak łatwo jak teraz, że łatka automatycznie pobierała się z netu i aktualizowała. Trzeba było pójść do sklepu z dyskietką lub kasetą i wymienić na nową grę. Niektórzy robili problemy, że brak paragonu, że otwarte pudełko, że coś-tam... Hmmm... Może jednak teraz jest lepiej :)
Nie jestem zawodowym programistą, ale nieskromnie mogę stwierdzić, że pierwsze wersje mojego Alib CyMeS też nie miały błędów, co najwyżej nieco problemów w kwestii wyświetlania sprawiał Internet Explorer, ale z nim zawsze tak było. Potem zacząłem rozwijać CMS i... się zaczęło. Dochodziły nowe funkcjonalności, trzeba było zrobić kontrolę danych, zabezpieczenia przez włamaniami. Czasami paradoksalnie to zabezpieczenie powodowało błąd, bo zbyt nadgorliwie filtrowało dane. Teraz osiągnąłem już ten etap, że nie rozbudowuję głównego silnika i od kilku lat (odpukać) poważniejszych problemów nie miałem. Te drobne nie mają wpływu na stabilność działania systemu i objawiają się w bardzo specyficznych warunkach, do których chyba tylko ja doprowadzam :)
Już uszami duszy słyszę hejterskie głosy, że powinienem skasować i zapomnieć o własnym CMS-ie, skoro to taki gówno i powinienem przesiąść się na coś, co ma dużą społeczność, bo społeczność jest gwarancją szybszego znalezienia błędu czy innej dziury. No właśnie, czyli każdy system ma dziury, a im większy tym więcej. W końcu każdy ma prawo do popełniania błędów. Z tym po prostu musimy żyć...