Projekt

Obecné

Profil

Akce

Dekompozice kódu

Tento text popisuje prověřenou dobrou techniku "dekompozice kódu".

6. 11. 2019, Lukáš Moučka, Štěpán Červenka (redakce textu: P.Brada)

Cílové skupina

Hlavní cílovou skupinou jsou programátoři. Dekompozice je důležitá i pro vývojové týmy, které společně sdílí kód a spolupracují na něm. Další skupinu tvoří programátoři nebo vývojové týmy, kteří přebírají již hotový nebo rozpracovaný projekt.

Hlavní cíl

  • rozklad částí kódu do menších logických celků
  • rozšiřitelnost a přehlednost kódu pomocí rozdělení logiky

Dopady

  • efektivnější programování při rozšiřování kódu
  • jednodušší hledání chyb
  • podporuje metodu "Rozděl a panuj", která umožňuje řešit složitý problém rozdělením na menší dílčí části (podproblémy).

Překážky

  • je potřeba zaujmout jiný přístup k programování
  • vetší důraz je kladen na návrh
  • programovací jazyk (nemusí dekompozici dostatečně podporovat)
  • nelze obecně určit, jak má dekompozice vypadat; jedná se o tacitní znalost programátora

Popis

Hlavním cílem dekompozice je rozdělení určitého úseku kódu na menší (elementární) části, přičemž elementární část kódu můžeme chápat jako třídu, konstruktor nebo metodu. Každá elementární část by měla obsahovat jen kód, který vykonává operace spjaté s jejím názvem. Pokud např. v metodě s názvem vypisJmeno() budeme mít kód, který zároveň kontroluje, zda se jméno vyskytuje v kalendáři, tato část kódu by už měla v jiné metodě s názvem jeJmenoVKalendari().

Podobný přístup je možné aplikovat i v případě celých tříd. V situaci, kdy má programátor pocit, že současná třída příliš bobtná a stává se nepřehlednou, je na místě její funkčnost rozdělit na několik menších tříd.

Dekompozice podporuje metodu "Rozděl a panuj" a tím dovoluje programátorovi řešit relativně složitý problém rozdělením na menší podproblémy. Dílčí části (podproblémy) mohou být lépe řešené za pomoci týmové práce.

Při vývoji větších systémů lze všechny atributy nějakého objektu (zjištěné při procesu dekompozice) zaznamenávat do příslušných datových/informačních struktur. Podle těchto atributů následně probíhá nastavení např. PMD testů, které mohou odhalovat úseky kódu vhodné pro dekompozici. Dalším nástrojem pro zlepšení dekompozice je code review. V ideálním případě je návrh kódu správný už od jeho počátku a dekompozice se nemusí řešit až při refaktorování kódu. Zpětné modifikace kódu jsou vždy časově/finančně náročné.

Aktualizováno uživatelem Premek Brada před více než 4 roky(ů) · 15 revizí