Moderní tvorba webových aplikací

O webu

Pravidlo dvou

Jak používat pravidlo dvou pro efektivní psaní dobrého kódu

3 minuty

Jedna z osvědčených zásad psaní kódu je DRY (don’t repeat yourself – česky „neopakuj se“). Znamená to neduplikovat kód stylem copy & paste na více místech v projektu, ale místo toho vyčlenit společné části do universálních funkcí nebo komponent.

Další dobré pravidlo je KISS (keep it simple, stupid – česky „drž to jednoduché“). To jde občas proti DRY, protože prosté zkopírování je někdy mnohem jednodušší než vymýšlení složité abstrakce za každou cenu.

Pravidlo dvou

Osobně se mi osvědčilo pravidlo dvou: jednorázové vědomé duplikování je v pořádku. Společnou abstrakci vytvářím až ve chvíli, kdy stejný kód potřebuji podruhé (tj. reálně by byl v projektu už na 3 místech).

Tím se předejde předčasné optimalisaci a zbytečné ztrátě času v době, kdy ještě není jasné, jakým směrem se vývoj vydá.

Často se navíc ukáže, že domněle „společná“ logika má v detailech rozdílné požadavky a sdílená abstrakce by další rozvoj spíš brzdila.

Proč to funguje

  • Neabstrahuje se naslepo – kód je ověřen dvěma nezávislými použitími.
  • Menší risiko překomplikování – vyhýbá se nadměrně obecnému návrhu.
  • Rychlejší doručení hodnoty – první implementace je jednoduchá, rychlá a srozumitelná.
  • Lepší ergonomie – skutečné potřeby se ukážou až po druhém použití.

Jak postupovat

  1. Poprvé – klidně duplikuj. Udrž kód čitelný, pojmenuj věci srozumitelně a zbytečně nezobecňuj.
  2. Podruhé – refaktoruj. Vytvoř společnou funkci/modul/komponentu, přesuň duplicitní části.

Určitě ale není nutné se tím řídit vždy a existují případy, kdy může dávat smysl se duplikování bránit už od počátku. Například, kdy je dodržení DRY málo pracné nebo dokonce jednodušší na vývoj/testování.

Příklad: duplikace → extrakce

Poprvé – jednoduchá duplicita:

async function saveUser(user) {
  const res = await fetch('/api/users', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify(user)
  });
  return res.json();
}

async function saveOrder(order) {
  const res = await fetch('/api/orders', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify(order)
  });
  return res.json();
}

Podruhé – extrakce společného kódu:

async function postJson(url, data) {
  const res = await fetch(url, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify(data)
  });
  if (!res.ok) throw new Error('Request failed');
  return res.json();
}

const saveUser = (user) => postJson('/api/users', user);
const saveOrder = (order) => postJson('/api/orders', order);

Závěr

Nechť DRY zůstane cílem, ne dogmatem. Pravidlo dvou dává praktické vodítko: duplikuj jednou, abstrahuj podruhé. Jednoduché, čitelné – a zpravidla nejrychlejší cesta k udržitelnému kódu.

Související články

Checklist věcí, na které se při přechodu na nový iPhone zapomíná

Na co se nejčastěji zapomíná při migraci na nový iPhone? Bankovní aplikace, messengery, eGovernment služby a další aplikace.

9 minut

Google Antigravity: Nová AI vývojářská platforma

Google představil Antigravity - vývojářskou platformu s AI agenty poháněnou modely Gemini 3, Claude Sonnet a GPT-OSS.

7 minut

Windows 10 bez podpory: Jaké máte možnosti

Podpora Windows 10 skončila 14. října 2025. Zjistěte, jaké možnosti máte.

15 minut

Generování QR kódu

Co je to QR kód a jak ho okamžitě vytvořit pomocí jednoduchého online generátoru.

18 minut

Novinky e-mailem

Když budu mít něco opravdu zajímavého, můžu vám to poslat e-mailem

Web jecas.cz píše Bohumil Jahoda, kontakt
Seznam všech článků
2013–2025