Kódovatelný protokol Swift, část I

V uvedeném příkladu jsme i přes přidání inicializační funkce odstranili potřebu mnoha slovních příkazů „if-let“ a „guard-else“ při analýze kódu (nutných pouze při zpracování nepovinného návratu z vytvoření adresy URL). Kromě toho si všimněte, že běžná, nepovinná vlastnost id a nepovinná vlastnost caption jsou analyzovány pomocí stejné syntaxe kódu. První parametr dekódovací funkce pro popisek specifikuje, že očekává nepovinnou hodnotu, tím, že za očekávaný datový typ připojí otazník.

V tomto okamžiku se náš parsovací kód blíží délce původního nekódovatelného objektu. Nový kód je však přehlednější a odděluje oblasti kódu, kde běžně dochází k překlepům (řetězce určující klíče JSON), do snadno identifikovatelného výčtu.

Oddělením klíčů JSON do výčtu a odstraněním potřeby většiny příkazů „if-let“ a „guard-else“ nám výše uvedený protokol Codable dává dostatečný prostor pro budování našich objektů bez drastického zvýšení složitosti kódu.

Jednotlivci nebo týmy, které spravují kód back-endu i front-endu, mají obecně svobodu průběžně upravovat svůj datový model tak, aby pracoval s jejich vizuálními modely, a to s malou logistickou režií (pokud jste nikdy nebyli na setkání stejně zarputilých vývojářů front-endu a back-endu, považujte se za šťastlivce). Pro ty, kteří spadají do této kategorie, je výhodou implementace Codable mít deklarované a analyzované objekty Swift s co nejmenším množstvím kódu a držet krok s osvědčenými postupy a očekáváními společnosti Apple. Pokud však pracujete v rozsáhlém vývojovém týmu, který se zabývá rozhraními API poskytovanými samostatným subjektem, kde nemůžete kontrolovat načasování nebo podrobnosti změn v datech, která mají být vrácena, může být Codable vaším zářivým světlem naděje uprostřed šílenství.

Představte si, že provedete tři volání rozhraní API v různých oblastech aplikace, přičemž každé z nich má vrátit přesně stejný objekt Swift. V tomto nešťastném API se stane, že každé z těchto volání vrátí data s trochu jiným slovníkovým klíčem; object_id, obj_id a Object_ID, přičemž všechna mají odkazovat na stejnou vlastnost, objectId, na objektu, který chcete vytvořit. Dříve by dekódovací funkce musela mít řadu příkazů „if-let“ pro kontrolu id v každém z těchto klíčů, než by se nakonec rozhodla, kterou hodnotu, pokud vůbec nějakou, nastaví jako vlastnost.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.