Přeskočit na obsah

Refaktoring, nebo přepsat od nuly? Jak se rozhodnout

Pro CTO a vývojářeRozhodnutí CTO · Aktualizováno

Filip Papraneczakladatel Digitaliko

Refaktoring, nebo přepsání? Rozhoduje, co kód dělá. Ilustrace: okno se starým kódem, ze kterého vedou dvě cesty, refaktoring po krocích a přepsání od nuly.Refaktoring, nebo přepsání? Rozhoduje, co kód dělá. Ilustrace: okno se starým kódem, ze kterého vedou dvě cesty, refaktoring po krocích a přepsání od nuly.

Refaktoring je úprava kódu, která zlepší jeho strukturu a nezmění, co software dělá. Refaktoring, nebo přepsání od nuly, je rozhodnutí o tom, kolik měsíců roadmapy jste ochotni zastavit. Většinou vyhraje refaktoring po malých krocích, protože produkt během něj dál vydělává.

Přepsání od nuly dává smysl ve třech případech: kód dělá špatnou věc, nevlastníte ho, nebo stojí na technologii bez podpory. Níže je rozhodovací tabulka a postup, jak refaktorovat bez zastavení roadmapy.

Tři cesty u starého kódu: refaktoring po krocích, když kód dělá správnou věc špatně, náhrada jedné části, když jeden modul brzdí všechno, a přepsání od nuly, když kód dělá špatnou věc nebo ho nevlastníte. U každé příklad a postup.Tři cesty u starého kódu: refaktoring po krocích, když kód dělá správnou věc špatně, náhrada jedné části, když jeden modul brzdí všechno, a přepsání od nuly, když kód dělá špatnou věc nebo ho nevlastníte. U každé příklad a postup.

AI dnes píše všechen náš kód, za výsledek ručí senior. Filip předtím roky vyvíjel SaaS, který denně používalo 60 000+ lidí. Ani jednou se nepřepisoval od nuly. Měnil se malými změnami přes review, přímo v živém produktu.

Proč je velké přepsání skoro vždy dražší, než se zdá?

Přepsání vypadá čistě, protože nový kód ještě nemá historii. Tu historii ale potřebujete. Za každou divnou podmínkou ve starém kódu bývá něčí reklamace.

Nejčastější důvody, proč se přepsání prodraží:

Přepsání od nuly

  • Ztratíte opravy. Starý kód obsahuje roky drobných oprav a zákazníci chyby najdou znovu.
  • Platíte dva systémy. Dokud přepsání není hotové, starý je potřeba udržovat a rozvíjet.
  • Roadmapa stojí. Obchod čeká na funkce a nový systém zpočátku umí méně než starý.
  • Cíl utíká. Než přepsání dožene starý systém, ten má nové funkce.

Tyto náklady nemá

Refaktoring po krocích

  • Produkt běží a dál vydělává.
  • Zákazníci nic nepoznají.
  • Každou změnu jde vrátit.
  • Nové funkce jdou souběžně s refaktoringem.

Kdy refaktorovat a kdy přepsat: rozhodovací tabulka

SituaceCo doporučujemeProč
Kód dělá správnou věc, ale špatně se měníRefaktoringChování chcete zachovat, měníte jen tvar kódu.
Chybí testyNejdřív testy, potom refaktoringBez testů nevíte, co jste rozbili.
Jedna část brzdí všechno ostatníNahradit tuto část, zbytek refaktorovatJeden modul za stabilním rozhraním je zvládnutelný.
Kód dělá špatnou věc, byznys se změnilPřepsat tuto částNemá smysl zachovávat chování, které nechcete.
Kód nevlastníte nebo k němu nemáte přístupNový systém a přesun datNení co refaktorovat.
Technologie nemá podporu ani bezpečnostní záplatyPostupná migracePřesouvejte po částech, ne všechno najednou.
Nikdo v týmu kódu nerozumíNejdřív pochopit, potom rozhodnoutNepochopený kód není důvod k přepsání. Je to důvod k testům.

Pozor na poslední řádek. „Nikdo tomu nerozumí“ je nejčastější argument pro přepsání. Zároveň nejhorší. Nový tým, který starému kódu nerozumí, ho přepíše bez oprav, které v něm jsou.

Přepsání bývá i nejjednodušší upsell. Při auditu produktu jednoho zakladatele se nabízelo monorepo a přepsání backendu do TypeScriptu. Napsali jsme opak: repozitáře jsou v pořádku, TypeScript přidávejte po modulech a začněte přihlášením a právy.

Jak refaktorovat bez zastavení roadmapy?

  1. Testy na současné chování

    Nejdřív popište, co systém dělá dnes, i s chybami. Teprve potom měňte.

  2. Malé kroky v běžném toku

    Žádná větev, která se měsíc nezmerguje. Každá změna projde review a CI.

  3. Refaktorujte tam, kde děláte funkci

    Kód, na který měsíc nikdo nesáhne, může počkat.

  4. Novou část stavějte vedle staré

    Přepínejte postupně, dokud starou nemůžete vypnout.

  5. CI, které opravdu zastaví špatnou změnu

    Zelená fajfka bez testů nic nedokazuje.

AI tu dělá to, co je pomalé a nudné. Testy na existující chování, přesuny kódu, přejmenování. Senior rozhoduje, co se mění a v jakém pořadí. Jaká pravidla na to AI dáváme, popisujeme v článku Pravidla pro AI kód v týmu.

Když máš testy, refaktoring jde snadno.

Filip Papranec
Filip Papranec
zakladatel Digitaliko

Bez testů a review vám AI technický dluh jen zrychlí. Proto říkáme, že agent je model plus rámec. Rámec je to, co špatnou změnu zastaví.

Kdy je přepsání od nuly správná volba?

Když kód nevlastníte. Pokud původní systém nepatří vám, není co refaktorovat: postaví se nový a data se přesunou.

I při přepsání platí stejné pořadí. Nejdřív data a pochopení, co systém opravdu dělá. Potom obrazovka po obrazovce, ne všechno v jeden den.

Před rozhodnutím si projděte šest bodů. Zaškrtněte, co o vašem systému platí:

Nejvíc váží čtvrtý bod. Pokud kód dělá správnou věc, jen špatně, refaktorujte.

Kdy to nedoporučujeme

  • Máte seniora, který systém zná a má na něj čas. Refaktorujte sami. Tabulka výše vám stačí.
  • Systém se za pár měsíců vypíná. Neinvestujte do kódu, který končí. Investujte do přesunu dat.

Chcete rozhodnout s někým, kdo to dělá denně?

Senior se zapojí do vašeho repozitáře a pull requestů od prvního dne. Nejdřív testy, potom změny po malých krocích a roadmapa běží dál. Takhle pracujeme jako externí vývojář pro produktový tým.

Napište nám, která část kódu vás brzdí. Ozveme se do dvou pracovních dnů a společně vybereme, co vyřešíme jako první.

Pokud si chcete nejdřív promluvit, domluvte si meeting na 15 minut s Filipem.

Kterou část vašeho kódu byste nejraději zahodili, a proč?

Ve zkratce

  • Refaktorujte, když kód dělá správnou věc špatně. Přepisujte, když dělá špatnou věc nebo ho nevlastníte.
  • Velké přepsání stojí roadmapu, opravy a dva systémy najednou.
  • Nejdřív testy na dnešní chování, potom malé kroky v běžném toku.
  • I přepsání dělejte po částech, nikdy všechno najednou.

Časté otázky

Kdy refaktorovat a kdy přepsat kód od nuly?

Refaktorujte, když kód dělá správnou věc, ale špatně se mění. Přepište ho, když dělá špatnou věc, kód nevlastníte nebo technologie ztratila podporu. I pak přepisujte po částech, ne najednou.

Dá se refaktorovat bez testů?

Dá, ale je to hazard. Nejdřív napište testy na současné chování, i s jeho chybami. Teprve potom měňte kód. Bez testů se o chybě dozvíte od zákazníka.

Jak dlouho trvá refaktoring?

Nemá pevný konec a to je v pořádku. Dělá se průběžně v běžných pull requestech, tam, kde právě pracujete. Samostatný refaktoringový projekt na měsíce se většinou nedokončí.

Pomůže AI s refaktoringem?

Ano, při psaní testů, přesunech kódu a přejmenování. Rozhodnutí, co měnit a v jakém pořadí, zůstává na seniorovi. Bez testů a review AI chyby jen zrychlí.

Zeptejte se AI na tento článek

AI při odpovědi využije i naše další články a zkušenosti z reálných projektů.

ChatGPTClaudePerplexity
Engineering

Ostatní články

Rozhodnutí CTO

Claude Code pricing: cena pro tým, API a agenty

Claude Code pricing podle veřejného ceníku Anthropicu (říjen 2026): Pro, Max, Team seaty, Enterprise a API tokeny. Co se hodí vývojářům, na čem běží agent na pozadí a CI reviewer, a pojistky, které agentovi nedovolí projet rozpočet.

Rozhodnutí CTO

Alternativy k Vercelu: proč máme Vercel i Cloudflare

Vercel jsme nenahradili, práci jsme rozdělili. Next.js weby zůstávají na Vercelu, nové aplikace běží na Cloudflare Workers a D1, popsané v TypeScriptu přes Alchemy. Ceny se zdroji, naše konfigurace a zablokovaný deploy od AI agenta.

Rozhodnutí CTO

Better Auth vs Clerk: proč jsme si vybrali Better Auth

Better Auth vs Clerk se rozhoduje podle toho, kde žijí vaši uživatelé a session. Z NextAuth jsme v nových aplikacích přešli na Better Auth a Clerk jsme si nevybrali. Naše reálná konfigurace, pluginy v produkci, ceník Clerku a kdy je Clerk lepší volba.

Čas přestat plánovat a začít řešit.

Kontakt

  • Digitaliko s.r.o.
    Šípková 377/17
    958 03 Malé Uherce, Slovensko
  • Ozvěte se nám
    info@digitaliko.com
    +421 950 595 506
    WhatsApp