Přepínání vlastností () je technika při vývoji softwaru, která umožňuje měnit chování softwaru bez změny kódu. Umožňuje zapínat a vypínat určité funkce aplikace při běhu, bez potřeby aplikaci znovu sestavovat a nasadit. Přepínání vlastností poskytuje alternativu k udržování několika větví zdrojového kódu. Využívá podmínku nebo podmínky v kódu, které aktivují nebo obcházejí určitý softwarový rys. V agilním prostředí se přepínač používá v produkci, aby se funkce na vyžádání zapnula pro některé nebo všechny uživatele. Přepínače funkcí tak ulehčují časté vydávání nových verzí softwaru a usnadňují používání pokročilých strategií zavádění funkcí, jako je například vydávání kanárkových verzí a A/B testování.
Přepínání vlastností poskytuje podporu pro kontinuální doručování i v případě, kdy nové verze nejsou do produkce nasazovány kontinuálně, tím, že určitá funkčnost může být zabudována do hlavní větve před svým úplným dokončením. Pokud lze novou vlastnost zapínat a vypínat, může být okamžitě zahrnuta do produktu a testována v testovacím prostředí. Cykly integrace software se zkracují a je možné poskytnut verzi připravenou k nasazení do produkce.How GitHub Leverages Feature Flags to Ship Quickly and Safely, infoq, 2021-05-09.
Dalším využitím této techniky je umožnit vývojářům vydat verzi produktu, která má nedokončené funkce. Tyto nedokončené funkce jsou skryté, takže se v uživatelském rozhraní nezobrazují. Začleňování funkcí do produkční větve, případně jejich vyřazování, je méně náročné, a díky tomu je možné vydávat více malých inkrementálních verzí softwaru.
Implementace Přepínače funkcí jsou v zásadě proměnné, které se testují v podmíněných příkazech, a na základě jejich hodnot přepínat nebo obcházet funkce, které nejsou připraveny k nasazení. Blok kódu za takovou běhovou proměnnou je stále přítomen a může být podmíněně spuštěn, někdy i v rámci téhož životního cyklu aplikace; naproti tomu blok kódu, kyerý je za direktivou preprocesoru pro podmíněný překlad nebo zakomentovaný, spustit nelze. Přístup založený na přepínání funkcí dovoluje použít některou z těchto metod k vyčlenění určitých cest v kódu do různých fází vývoje.
Hlavním využitím přepínání funkcí je zabránit konfliktům, které mohou vzniknout při slučování změn v softwaru na poslední chvíli před vydáním, i když to může vést k přepínacímu dluhu. Přepínací dluh je způsoben přítomností mrtvého kódu v softwaru po trvalém zapnutí funkce a může způsobovat určité režiní náklady. Odstranit takovou část kódu je třeba opatrně, aby nedošlo k narušení zbytku kódu.
Existují dva hlavní typy přepínačů funkcí. Jedním z nich je přepínač pro vydání, o jehož zachování nebo odstranění rozhoduje vývojář před vydáním produktu podle toho, zda je funkční. Druhým je přepínač obchodní, který je ponechán, protože poskytuje jinou funkčnost, než původní kód.
Přepínání vlastností se může používat v následujících scénářích: Přidání nového rysu do aplikace. Vylepšení existujícího rysu v aplikaci. Skrytí nebo zakázání určitého rysu. Rozšiřování rozhraní.
Přepínače vlastností mohou být realizována jako: Řádkové položky v databázi. Vlastnosti v konfiguračním souboru. Položka poskytovaná externí službou poskytující příznaky rysů.
Skupiny vlastností Skupiny vlastností (rysů) se skládají z přepínačů vlastností, které fungují dohromady. Umožňují vývojářům snadno řídit sadu příbuzných přepínačů.
Kanárková verze Kanárková verze () umožňuje vývojářům nechat funkce postupně testovat malým počtem vývojářů. Příznaky funkcí jako alternativní způsob kanárkového spouštění umožňují cílení podle geografických lokací nebo dokonce atributů uživatelů. Pokud je výkon funkce neuspokojivý, pak ji lze vrátit zpět bez jakýchkoli nepříznivých dopadů. Název vychází z použití kanárků v dolech a chemických provozech pro varování horníků nebo zaměstnanců před jedovatými plyny.
Přijetí Martin Fowler uvádí, že přepínač vydání, specifický typ přepínače funkcí, „by měl být vaší poslední volbou, když se zabýváte zaváděním funkcí do produkce“. Místo toho je lepší rozdělit funkci na menší části, z nichž lze každou implementovat a bezpečně zavést do dodávaného produktu, aniž by způsobila jiné problémy.
Přepínání funkcí používá mnoho velkých webových sídel jako je Flickr, Disqus, Etsy, Reddit, Gmail a Netflix, stejně jako software jako je např. Google Chrome Canary nebo Microsoft Office.
Odkazy
Reference
Kategorie:Proces vývoje softwaru Kategorie:Programování