20. 12. 2016

Config Marks

Navrhnul jsem systém značek pro konfigurační soubory.

Popis

Zde: https://bitbucket.org/rotacak/configmarks
 

K čemu to je?

Když programátor vytvoří složitější konfigurační soubor, může být problematické se v tom vyznat. Potom vznikají kilometrové komentáře, dokumentace a nebo přinejhorším nevznikne nic a uživatel vyplňuje v konfiguračních souborech polovinu věcí, které vyplňovat nemusí a nevyplní takové, které jsou potřeba.

Config Marks tohle řeší. Není to ale primárně určené pro běžné uživatele, ti to těžko pochopí, ale spíše pro samotné programátory nebo pokročilé uživatele, kteří se v configu díky tomu rychle vyznají.

Upozornění

Config Marks mají své specifické určení a velmi se hodí tam, kde je možné nepoužité vlastnosti úplně vynechat. Ale první otázka, kterou by si člověk před použitím Config Marks měl položit, je "mám konfigurační soubor správně navržen?".

Ukázka použití

Řekněme, že musíme nakonfigurovat systém, který řeší stránkování na webu, čili HTML + Javasript. A po kliknutí na tlačítko, se mohou stát dvě věci. První - přejdu na další krok v html (aktuální div se skryje, druhý div se zobrazí). Druhá - přesměruje mne to na vlastní www stránku.

Konifgurace by mohla vypadat takhle:
page: {
    id: number,
    1 moveToHtmlId: string
    1 redirectToWww: string
}

Je jasné, že moveToHtmlId a redirectToWww nelze použít najednou, protože po kliknutí se můžu buď dostat na další krok v html, nebo načít úplně novou stránku, ale ne oboje.

Díky Config Marks je to ale jasné. Co tam vidíme? Všechny vlastnosti jsou povinné (nejsou uvedeny v hranatých závorkách). Stringové vlastnosti mají na začátku ale číslo 1 a to jsou značky z Config Marks. Číslo před vlastností znamená sloupcové OR. Čili já vím, že musím použít moveToHtmlId nebo redirectToWww, ale ne oboje najednou a přesto alespoň jednu z nich.

Můžete navrhnout jinou konfiguraci, která to nepotřebuje:
page: {
    id: number,
    action: string
    target: string
}

V tomhle případě to vypadá krásně, ale abyste to dokázali použít, neobejdete se bez studování dokumentace. Tam se teprve dozvíte, že v action může být "moveToHtmlId, redirectToWww" a v target může být buď id nebo webová adresa.

Kromě toho, Config Marks řeší i další vztahy mezi vlastnostmi jako je AND, ONEWAY AND a ROW OR, čímž lze popsat jakkoliv provázané vlastnosti.

A můžete navrhnout ještě jinou konfiguraci:
page: {
    id: number,
    redirect: string
}

V takovém případě by vlastnost redirect mohla obsahovat jak id, tak www stránku a program by to detekoval automaticky. Ale zase, abyste se to dozvěděli, musíte jít do dokumentace.
 

Praxe

Po více než roce jsem se vrátil k popisu vlastností jednoho pluginu, kde jsem Config Marks použil a byl jsem zvědavý, jestli mi to i po delší odmlce pomůže. A skutečně, prakticky okamžitě jsem se vyznal v použitých vlastnostech, jejich vztazích a naprosto odpadl ten pocit "nezapomněl jsem něco vyplnit?" nebo "je tohle potřeba?".

A díky minimalistickému zápisu se to velmi dobře čte.

Čili zatím se mi to jeví jako skvělý pomocník a pokud chcete mít konfigurace více expresivní a nechcete nutit uživatele studovat obsáhlé dokumentace (které to mimochodem stále neřeší), můžu Config Marks doporučit.

Žádné komentáře:

Okomentovat