Wstęp
Prowadzisz firmę od kilku lat. Aplikacja działa, klienci nie narzekają, zespół IT zajęty nowymi funkcjami. Brzmi dobrze? Niekoniecznie. Gdzieś w tle czai się martwy kod – fragmenty, które kiedyś miały sens, a dziś są tylko balastem. I choć nikt ich nie używa, Ty za nie płacisz. Codziennie.
Martwy kod to nie tylko kilka linijek w repo. To kompilacja, testy, przeglądy, potencjalne błędy i czas nowych developerów na zrozumienie, co można usunąć. W tym artykule pokażę Ci realne koszty tego zjawiska i jak je zminimalizować.
Sekcja 1: Co to właściwie jest martwy kod i jak go rozpoznać?
Martwy kod to każda część aplikacji, która nie jest wywoływana w żadnym scenariuszu produkcyjnym. Może to być stary endpoint API, funkcja do obsługi nieistniejącego już procesu, komponent frontendu, który został zastąpiony, albo warstwa abstrakcji, która nigdy nie zaistniała.
Jak go znajdziesz? Najprościej – użyj narzędzi do analizy pokrycia kodu podczas rzeczywistego ruchu (np. JaCoCo dla Javy, Istanbul dla JS, czy profiler dla Pythona). Jeśli fragment kodu nie jest wykonywany przez żadnego użytkownika przez miesiąc – to martwy kod. Ale uwaga: nie każdy nieużywany kod jest do usunięcia – czasem działa tylko w określonych porach roku (np. raporty kwartalne) lub przy specyficznych uprawnieniach.
Sekcja 2: Ile kosztuje utrzymanie martwego kodu?
Wyobraź sobie, że w Twojej aplikacji jest 5000 linii martwego kodu. Każda linia to potencjalne miejsce błędu, które może spowodować regresję. Każda zmiana w innych częściach systemu wymaga przetestowania, czy nie wpłynie na te martwe ścieżki. To dodatkowa praca QA.
Przykład: w pewnym startupie e-commerce znalazłem moduł koszyka, który nie był używany od dwóch lat. Zajmował 15% bazy kodu. Zespół spędzał łącznie około 20 godzin miesięcznie na utrzymaniu tego kodu (przeglądy, testy, poprawki przy refactoringu). To 240 godzin rocznie. Przy stawce 100 zł/h za developera – 24 000 zł rocznie. Za nic.
Sekcja 3: Dlaczego martwy kod jest niebezpieczny dla bezpieczeństwa?
To nie tylko pieniądze. Martwy kod często zawiera stare biblioteki, niezałatane luki, backdoory testowe. Atakujący mogą wykorzystać nieużywany endpoint jako wejście do systemu. Klasyka: w jednej z firm stary endpoint do testów płatności został w produkcji – pozwalał na symulację transakcji bez autoryzacji stanu konta. Na szczęście nie został wykorzystany przed odkryciem.
Każda linia kodu to powierzchnia ataku. Utrzymując martwy kod, zwiększasz ryzyko bez żadnej korzyści.
Sekcja 4: Jak się pozbyć martwego kodu bez ryzyka?
Proces czyszczenia kodu to nie tylko usunięcie i push. Zrób to tak:
- Zidentyfikuj – użyj narzędzi do pokrycia w produkcji, przejrzyj logi, porozmawiaj z zespołem o funkcjach, które od dawna nie były rozwijane.
- Wyizoluj – przenieś podejrzane fragmenty do osobnej gałęzi lub oznacz jako deprecated z logowaniem ostrzeżeń.
- Monitoruj – przez co najmniej jeden cykl biznesowy (np. miesiąc) obserwuj, czy logi się pojawiają. Jeśli nie – usuń.
- Usuń z głową – rób to w osobnych PR-ach, najlepiej poza sprintem. Upewnij się, że testy pokrywają ścieżki, które mogą być dotknięte.
- Dokumentuj – zapisz, co usunąłeś i dlaczego, aby uniknąć ponownego dodania.
W JurskiTech często wdrażamy taki proces podczas audytów technicznych. Klienci są zaskoczeni, ile kodu można bezpiecznie wyciąć.
Sekcja 5: Martwy kod a dług technologiczny – jak to powiązane?
Martwy kod to jedna z najbardziej rażących form długu technologicznego. Podobnie jak przeterminowane biblioteki, brak testów czy architektura, która nie przystaje do potrzeb. Różnica? Martwy kod nie przynosi żadnej wartości – to czysty koszt.
Redukcja martwego kodu to najszybszy sposób na obniżenie długu technologicznego bez zmiany architektury. W jednym z projektów po czyszczeniu czas kompilacji spadł o 30%, a pokrycie testami wzrosło do realnych 70% (bo testy martwego kodu przestały być liczone).
Podsumowanie
Martwy kod to nie tylko kwestia estetyki. To realne pieniądze, ryzyko bezpieczeństwa i hamulec dla nowych funkcji. Regularne audyty i czyszczenie kodu powinny być standardem, a nie fanaberią.
Jeśli prowadzisz biznes oparty na własnej aplikacji, warto spojrzeć na kod krytycznym okiem praktyka. JurskiTech pomaga firmom w audytach technicznych i eliminacji martwego kodu – bo wiemy, że każda linia powinna pracować na Twój zysk.
A Ty? Kiedy ostatnio sprawdzałeś, ile w Twojej aplikacji jest kodu, który nikt nie używa?


