Na nabídku

5 základních operací


Kódění není až tak hrozné, tedy pokud nebyl váš předchůdce nebo vy sami líní a od začátku měl aspoň ideu, je skrz program vidět a celé to vůbec není ujeté. Bohužel má dosavadní zkušenost hovoří proti. Tedy nastalo typické lepení kódu. Nakonec aby se v tom vepř vyznal. U KWebCMS prvotní série se mi povedlo také něco podobného. Prostě jsem to založil od operací a ne od zpracovávaných dat. Navíc to byl můj první ostrý pokus nad objektovým návrhem. No každý nějak začíná.

KWebCMS2 je jiné. Z poznatků jsem si sedl na prsty a přemýšlel jsem, kde má stávající provedení největší slabiny. Z pozornosti nad funkcemi jsem přesunul pozornost nad data. A co vždy dělám s daty, ať už jsou kdekoliv?

  1. Přidávání. Vždy je potřeba cesta, jak někam nějaká data nasypat.
  2. Úprava. Data nebývají statická a mění se v čase.
  3. Mazání. Občas nás přestanou bavit.
  4. Vyhledávání/Výpis. Buď seberu vše, co mám, nebo podle nějakých pochybných parametrů hledání omezím. A vracím jen identifikátory.
  5. Detaily. Vyplivnout si rovnou vše potřebné je sice fajn, ale začínají nám neorganizovaně kynout vnitřnosti. A v tu chvíli jde k čertu i údržba. Takže dostanu kdesi sebraný výčet identifikátorů a co všechno chci tahat a na oplátku získávám pole dat (podle potřeby i indexované přes identifikátory).

Tímto mám pokryté vešekeré operace a upřímně mě nenapadají další dostatečně relevantní, které by na úrovni knihovny měly co dělat. A případná nejvyšší (klidně i abstraktní) třída nad daty nebude ani nic jiného obsahovat.

V KWebCMS dnes zůstává poslední třída, do které jsem ještě nechtěl touto změnou zasahovat a zároveň jí už tolik neporušovala. Je to správa hesel. To je kód natolik zběsilý a přitom zásadní, že si ho zatím nedovoluji upravovat. Na druhou stranu je pravda, že se změnou přístupu k uživatelským složkám mi spousta havarijního kódu zmizela.

Změna ve vyšších vrstvách se projevila především čitelností struktury a zmenšením množství souborů, které se přihazují. Dále jsem mohl vstupy a výstupy od uživatele - tedy REQUEST a HTML - lépe seskládat na hromadu. Projevilo se mi to třeba v nahrávání přerostlých souborů nebo u tvorby rozhraní nastavení. A nemusím tak extra řešit, jak to přilétlo.

Skvělý příklad: ukládání třeba této rozepsané statě. Buď přímo prohlížečem nebo přes Ajax pošlu text na server, tam ho zpracuje daná funkce modulu a předá ho k přidání/aktualizaci knihovně. Odchytnu výsledek (nic je taky výsledek) a podle formátu pak v odpovědním kolečku dostanu buď přímo stránku nebo jen balíček JSON, kde mi výsledek oznámí. A pak mám buď hotovo nebo vynadáno (a neuloženo).

Proč to není CRUD? Protože CRUD předpokládá, že se mu pro vyhledání vrátí balík (možná potřebných) dat. Ale já vracím jenom identifikátory a data se musí dotázat extra (požadavek na detaily).

Petr Plšek, 182 00 Praha, me@kalanys.com