Každý ví, že by to měl dělat, ale málokdo to skutečně dělá. Řeč je formátování sql kódu a jeho přehlednosti. Zejména ve větších týmech dokážou pravidla ohledně formátování zjednodušit a zefektivnit práci. Mnohdy i o několik desítek procent/mnoho man days v případě revizí/úprav kódu a refaktoringu kódu.
Proč je správně naformátovaný kód důležitý
Každý kód (nejen SQL) je součástí nějakého produktu a jako takový je během svého životního cyklu mnohokrát revidován, upravován a analyzován různými lidmi nebo třeba externími konzultanty. Je opravdu velmi časově náročně luštit po někom kód, který je napsán způsobem, že se v něm nelze vůbec vyznat – v případě T-SQL třeba pokud se jedná o kombinaci strašlivého kódu s provázáním přes více na sobě závislých objektů (např. views).
Často je to dokonce tak náročné, že je jednodušší kód napsat znovu a to mohou být v případě složitějších skritpů i desítky hodin a klidně i člověkodnů.
Takový kód má sníženou hodnotu, protože mu rozumí pouze člověk, který jej napsal a je dost dobře možné, že pokud tomuto člověku ukážete tento kód za rok, tak se v něm nevyzná ani on. Je dobré psát kód takovým způsobem, aby po mě byl schopen kód pochopit i juniorní kolega, který nemá znalost daného problému (který kód řeší).
Dá se říci, že je bezohledné (jak k zaměstnavateli tak ke kolegům), když člověk píše kód způsobem, že mu rozumí pouze on.
Příklad špatně a správně zformátovaného SQL kódu
Příklad špatně zformátovaného kódu uvedu na krátkém SQL skriptu. Představte si, že byste ale měli analyzovat nekolik set řádků takto napsaného kódu navíc přes různé na sobě závislé objekty – views a procedury…to je velký problém.
Co je špatně a co by měl správně kód obsahovat?
- Jednotlivé atributy SELECT klauzule nejsou na samostatném řádku
- Hlavní klauzule by z hlediska přehlednosti neměly být na stejném řádku
- Atributy v select a joiny odsazujeme
- Aliasy tabulek nepojmenováváme a,b,c,d ale alespon trošku popisně, ne však příliš dlouze
- Klauzule, operátory, joiny, funkce píšeme uppercasem
- Používáme komentáře – samozřejme v tomto případě jednoduchého dotazu to není nutné, ale pokud skript obsahuje nějakou složitější logiku je více než vhodné tuto transformaci okomentovat.
- Já osobně jsem hardcorář a používám striktně i hranaté závorky
Nyní kód přepíšu na formát, který se dá lépe číst
nad pochopením tohoto skriptu stráví člověk méně času než v případě nezformátovaného skriptu a správné zformátování nezabere mnoho času. Pokud se budeme bavit o skriptu o několik řádů složitějším, tak jsou tedy benefity zjevné.