Preskočiť na obsah

Refaktoring, alebo prepísať od nuly? Ako sa rozhodnúť

Pre CTO a vývojárovRozhodnutia CTO · Aktualizované

Filip Papraneczakladateľ Digitaliko

Refaktoring, alebo prepis? Rozhoduje, čo kód robí. Ilustrácia: okno so starým kódom, z ktorého vedú dve cesty, refaktoring po krokoch a prepis od nuly.Refaktoring, alebo prepis? Rozhoduje, čo kód robí. Ilustrácia: okno so starým kódom, z ktorého vedú dve cesty, refaktoring po krokoch a prepis od nuly.

Refaktoring je úprava kódu, ktorá zlepší jeho štruktúru a nezmení, čo softvér robí. Refaktoring, alebo prepis od nuly, je rozhodnutie o tom, koľko mesiacov roadmapy ste ochotní zastaviť. Väčšinou vyhrá refaktoring po malých krokoch, lebo produkt počas neho ďalej zarába.

Prepis od nuly dáva zmysel v troch prípadoch: kód robí nesprávnu vec, nevlastníte ho, alebo stojí na technológii bez podpory. Nižšie je rozhodovacia tabuľka a postup, ako refaktorovať bez zastavenia roadmapy.

Tri cesty pri starom kóde: refaktoring po krokoch, keď kód robí správnu vec zle, nahradenie jednej časti, keď jeden modul brzdí všetko, a prepis od nuly, keď kód robí nesprávnu vec alebo ho nevlastníte. Pri každej príklad a postup.Tri cesty pri starom kóde: refaktoring po krokoch, keď kód robí správnu vec zle, nahradenie jednej časti, keď jeden modul brzdí všetko, a prepis od nuly, keď kód robí nesprávnu vec alebo ho nevlastníte. Pri každej príklad a postup.

AI dnes píše všetok náš kód a za výsledok ručí senior. Filip predtým roky vyvíjal SaaS, ktorý denne používalo 60 000+ ľudí. Ani raz sa neprepisoval od nuly. Menil sa malými zmenami cez review, priamo v živom produkte.

Prečo je veľký prepis takmer vždy drahší, ako sa zdá?

Prepis vyzerá čisto, lebo nový kód ešte nemá históriu. Tú históriu však potrebujete. Za každou čudnou podmienkou v starom kóde býva niečia reklamácia.

Najčastejšie dôvody, prečo sa prepis predraží:

Prepis od nuly

  • Stratíte opravy. Starý kód obsahuje roky drobných opráv a zákazníci chyby nájdu znova.
  • Platíte dva systémy. Kým prepis nie je hotový, starý treba udržiavať a rozvíjať.
  • Roadmapa stojí. Obchod čaká na funkcie a nový systém na začiatku vie menej ako starý.
  • Cieľ uteká. Kým prepis dobehne starý systém, ten má nové funkcie.

Tieto náklady nemá

Refaktoring po krokoch

  • Produkt beží a ďalej zarába.
  • Zákazníci si nič nevšimnú.
  • Každá zmena sa dá vrátiť.
  • Nové funkcie idú popri refaktoringu.

Kedy refaktorovať a kedy prepísať: rozhodovacia tabuľka

SituáciaČo odporúčamePrečo
Kód robí správnu vec, ale ťažko sa meníRefaktoringSprávanie chcete zachovať, meníte len tvar kódu.
Chýbajú testyNajprv testy, potom refaktoringBez testov neviete, čo ste pokazili.
Jedna časť brzdí všetko ostatnéNahradiť túto časť, zvyšok refaktorovaťJeden modul za stabilným rozhraním je zvládnuteľný.
Kód robí nesprávnu vec, biznis sa zmenilPrepísať túto časťNemá zmysel zachovávať správanie, ktoré nechcete.
Kód nevlastníte alebo k nemu nemáte prístupNový systém a presun dátNie je čo refaktorovať.
Technológia nemá podporu ani bezpečnostné záplatyPostupná migráciaPresúvajte po častiach, nie všetko naraz.
Nikto v tíme kódu nerozumieNajprv pochopiť, potom rozhodnúťNepochopený kód nie je dôvod na prepis. Je to dôvod na testy.

Pozor na posledný riadok. „Nikto tomu nerozumie“ je najčastejší argument za prepis. Zároveň najhorší. Nový tím, ktorý starému kódu nerozumie, ho prepíše bez opráv, ktoré v ňom sú.

Prepis býva aj najjednoduchší upsell. Pri audite produktu jedného zakladateľa sa ponúkali monorepo a prepis backendu do TypeScriptu. Napísali sme opak: repozitáre sú v poriadku, TypeScript pridávajte po moduloch a začnite prihlásením a právami.

Ako refaktorovať bez zastavenia roadmapy?

  1. Testy na súčasné správanie

    Najprv opíšte, čo systém robí dnes, aj s chybami. Až potom meňte.

  2. Malé kroky v bežnom toku

    Žiadna vetva, ktorá sa mesiac nezlúči. Každá zmena prejde review a CI.

  3. Refaktorujte tam, kde robíte funkciu

    Kód, na ktorý mesiac nikto nesiahne, môže počkať.

  4. Novú časť stavajte vedľa starej

    Prepínajte postupne, kým starú nebudete môcť vypnúť.

  5. CI, ktoré naozaj zastaví zlú zmenu

    Zelená fajka bez testov nič nedokazuje.

AI tu robí to, čo je pomalé a nudné. Testy na existujúce správanie, presuny kódu, premenovania. Senior rozhoduje, čo sa mení a v akom poradí. Aké pravidlá na to AI dávame, opisujeme v článku Pravidlá pre AI kód v tíme.

Keď máš testy, refaktoring ide ľahko.

Filip Papranec
Filip Papranec
zakladateľ Digitaliko

Bez testov a review vám AI dlh len zrýchli. Preto hovoríme, že agent je model plus rámec. Rámec je to, čo zlú zmenu zastaví.

Kedy je prepis od nuly správna voľba?

Keď kód nevlastníte. Ak pôvodný systém nepatrí vám, nie je čo refaktorovať: postaví sa nový a dáta sa presunú.

Aj pri prepise platí rovnaké poradie. Najprv dáta a pochopenie, čo systém naozaj robí. Potom obrazovka po obrazovke, nie všetko v jeden deň.

Pred rozhodnutím si prejdite šesť bodov. Zaškrtnite, čo o vašom systéme platí:

Najviac váži štvrtý bod. Ak kód robí správnu vec, len zle, refaktorujte.

Kedy to neodporúčame

  • Máte seniora, ktorý systém pozná a má naň čas. Refaktorujte sami. Tabuľka vyššie vám stačí.
  • Systém sa o pár mesiacov vypína. Neinvestujte do kódu, ktorý končí. Investujte do presunu dát.

Chcete rozhodnúť s niekým, kto to robí denne?

Senior sa zapojí do vášho repozitára a pull requestov od prvého týždňa. Najprv testy, potom zmeny po malých krokoch a roadmapa beží ďalej. Takto pracujeme ako externý vývojár pre produktový tím.

Napíšte nám, ktorá časť kódu vás brzdí. Ozveme sa do dvoch pracovných dní a spolu vyberieme, čo vyriešime ako prvé.

Ak sa chcete najprv porozprávať, dohodnite si meeting na 15 minút s Filipom.

Ktorú časť vášho kódu by ste najradšej zahodili, a prečo?

V skratke

  • Refaktorujte, keď kód robí správnu vec zle. Prepisujte, keď robí nesprávnu vec alebo ho nevlastníte.
  • Veľký prepis stojí roadmapu, opravy a dva systémy naraz.
  • Najprv testy na dnešné správanie, potom malé kroky v bežnom toku.
  • Aj prepis robte po častiach, nikdy všetko naraz.

Časté otázky

Kedy refaktorovať a kedy prepísať kód od nuly?

Refaktorujte, keď kód robí správnu vec, ale ťažko sa mení. Prepíšte, keď robí nesprávnu vec, kód nevlastníte alebo technológia stratila podporu. Aj vtedy prepisujte po častiach, nie naraz.

Dá sa refaktorovať bez testov?

Dá, ale je to hazard. Najprv napíšte testy na súčasné správanie, aj s jeho chybami. Až potom meňte kód. Bez testov sa o chybe dozviete od zákazníka.

Ako dlho trvá refaktoring?

Nemá pevný koniec a to je v poriadku. Robí sa priebežne v bežných pull requestoch, tam, kde práve pracujete. Samostatný refaktoringový projekt na mesiace sa väčšinou nedokončí.

Pomôže AI s refaktoringom?

Áno, pri písaní testov, presunoch kódu a premenovaniach. Rozhodnutie, čo meniť a v akom poradí, ostáva na seniorovi. Bez testov a review AI chyby len zrýchli.

Opýtajte sa AI na tento článok

AI pri odpovedi využije aj naše ďalšie články a skúsenosti z reálnych projektov.

ChatGPTClaudePerplexity
Engineering

Ostatné články

Rozhodnutia CTO

Claude Code pricing: cena pre tím, API a agentov

Claude Code pricing podľa verejného cenníka Anthropicu (október 2026): Pro, Max, miesta v Team pláne, Enterprise a API tokeny. Čo sedí vývojárom, na čom beží AI agent a reviewer v CI a aké poistky zastavia agenta na pozadí, aby neminul rozpočet.

Rozhodnutia CTO

Alternatívy k Vercelu: prečo máme Vercel aj Cloudflare

Vercel sme nenahradili, prácu sme rozdelili. Next.js weby ostávajú na Verceli, nové aplikácie bežia na Cloudflare Workers a D1, deklarované v TypeScripte cez Alchemy. Ceny so zdrojmi, naša konfigurácia a blokovaný deploy od AI agenta.

Rozhodnutia CTO

Better Auth vs Clerk: prečo sme si vybrali Better Auth

Better Auth vs Clerk sa rozhoduje podľa toho, kde žijú vaši používatelia a session. Z NextAuth sme v nových aplikáciách prešli na Better Auth a Clerk sme si nevybrali. Naša reálna konfigurácia, pluginy v produkcii, cenník Clerku a kedy je Clerk lepšia voľba.

Čas prestať plánovať a začať riešiť.

Kontakt

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