Blog | Branch by Abstraction

Branch by Abstraction

Používání větví ve verzovacích nástrojích není jediný přístup, jak vyvíjet souběžně více vlastností. Alternativou je Branch by Abstraction. Dnes vám tento přístup ukážu a vysvětlím, jake problémy klasických feature branchů řeší.

Běžný postup programátora, který používá kvalitní verzovací software, je:

  1. převezmu si úkol
  2. zajistím si potřebné údaje
  3. vytvořím feature branch
  4. v branchi vyřeším úkol
  5. branch spojím do development větve a pošlu věc na akceptaci
  6. pokud projde, pošlu branch do stable větve, která jde na deployment

Tento přístup je skvělý, ale nedokáže se vyrovnat s několika problémy:

  • dílo v branchi vyžaduje nekolizní editace (věc, která se předělává, se nesmí editovat v jiné větvi)
  • pokud je branch dlouhodobý, tak se tým dozví, jak se povedlo integrovat řešení až opožděně (třeba i jiný den – problém se typicky vynoří, když kolega zmerguje svou práci za celý den a odejde na dovolenou a nechá vzniklé problémy jiným)
  • v případě opravdu velmi dlouhodobých změn (předělání architektury na celé týdny), dochází obvykle k tomu, že tým není schopen celé týdny udělat release

Branch by Abstraction problém řeší naprosto odlišným způsobem.

Programátor postupuje takto:

  1. převezmu si úkol
  2. zajistím si potřebné údaje
  3. zjistím, v čem se liší můj úkol od stávajícího stavu a kde budu systém editovat
  4. všude tam, kde budu editovat současný kód, postavím abstraktní vrstvu na tím, co se bude měnit a přenesu do ní stávající implementaci
  5. naprogramuji novou implementaci splňující shodné rozhraní jako další adaptér
  6. přepnu abstrakci všude tam, kde mám práci hotovou a postupně přidávám místa s novou logikou
  7. až jsem přepsal všechny části systému, znovu odstraním abstraktní vrstvu a starý kus abstrakce zahodím (chci-li)

Zejména u dlouhodobých změn jsem získal možnost dělat průběžně releasy s kousky nové logiky. Pracuju v hlavním branchi a všichni vidí, jak abstrakce přibývá a když chcou v kusu kódu udělat úpravu, už ji dělají uvnitř abstraktní vrstvy, které se zatím používá.

Tento postup je poměrně složitý na pochopení, často se můžou do abstrakce vytrhávat způsobem, který je dost nezvyklý. Proto jej zatím nepoužívám (a jsem spokojený s feature branche). U dlouhodobých změn na projektu bych každopádně nad Branch by Abstraction docela silně zauvažoval.

Více článků k tématu:

Life Hacking

Předejte zkušenosti i dalším a sdílejte tento článek!

Předchozí článek
Následující článek


Jiří Knesl
Business & IT konzultant

Jiří Knesl poprvé začal programovat v roce 1993. Od té doby, díky skvělým učitelům a později zákazníkům, měl možnost neustále růst v oboru vývoje webových aplikací a informačních systémů. v roce 2002 se přidal zájem o ekonomii a v roce 2006 o organizaci práce. Vším tím se konstantně profesně zabývá jak ve svém podnikání, tak i u zákazníků. Za posledních 5 let vydal na tato témata přes 400 článků.

Prohlédněte si moje reference

Mám zkušenosti z rozsáhlých projektů pro korporace, velké podniky, střední i malé firmy, ale i pro startupy v cloudu. Zvyšoval jsem jejich know-how, pomáhal nastavovat jejich organizační strukturu, byl lektorem a mentorem v náročných situacích. Podívejte se, jak vidí můj přínos samotní klienti.

Sledujte mé postřehy na sociálních sítích