Przejdź do treści
juz-ide.pl blog
Wróć

Siedemdziesiąt procent kodu do wyrzucenia

Paweł G.
3 min czytania
Siedemdziesiąt procent kodu do wyrzucenia
Lekcja Technologia anti-overengineering

Pewnego dnia we wrześniu 2025 siedziałem nad błędem w kodzie i zobaczyłem, że poprawiam go w dwóch miejscach jednocześnie. Ten sam błąd. Te same trzy kroki naprawy. Drugi raz z rzędu.

Musiałem wydzielić abstrakcję.

Dwa repozytoria, jeden problem

W DDD repozytorium to klasa odpowiedzialna za zapisywanie i odczytywanie agregatów domenowych z bazy danych. W sierpniu 2025 miałem dwa: jedno dla tożsamości użytkownika, drugie dla tożsamości społecznościowej (OAuth).

Oba miały identyczną strukturę: logika wersjonowania agregatów, obsługa eventów domenowych po zapisie, wzorzec transakcji, mapowanie błędów. Różniły się nazwami tabel i polami — reszta była copy-paste.

290 linii + 265 linii = 555 linii do utrzymania w dwóch miejscach.

We wrześniu wiedziałem, że nadchodzi kontekst geograficzny z kolejnymi repozytoriami, potem usługi lokalne, potem organizacje. Gdybym poszedł w to samo podejście, za pół roku miałbym 10 plików po 260 linii z 70% duplikacją.

Abstrakcja: kiedy i jak

Regułą, której się trzymam: nie abstrahuję przed trzecim przypadkiem. Jedna implementacja to implementacja. Dwie implementacje to przypadek. Trzy implementacje to wzorzec.

We wrześniu miałem dwie. Wiedziałem, że trzecia jest za rogiem. To był odpowiedni moment.

Kluczowe pytanie przy abstrakcji: co naprawdę jest wspólne, a co tylko wygląda tak samo? Wspólne wzorce zapisu, transakcji, mapowania błędów — to strukturalne, nie przypadkowe. Można je wydzielić bezpiecznie.

Klasa bazowa BaseKyselyRepository przejęła wszystko strukturalne. Konkretne repozytoria implementują metodę persist() — tylko to, co dotyczy ich konkretnej tabeli i mapowania pól.

Lekcja, którą zabieram

Solo developer ma jeden szczególny problem z duplikacją kodu: nikt nie przejrzy zmiany w code review i nie powie „widziałem to już gdzieś”. To spada na ciebie.

Dlatego prowadzę zestaw reguł, które inaczej byłyby w głowie recenzenta: duplikacja w trzecim miejscu to sygnał. Nie po pierwszym. Nie po drugim. Po trzecim — zatrzymuję się i patrzę.

We wrześniu 2025 ta reguła zaoszczędziła mi kilku tygodni pracy przez następne pół roku.



Poprzedni wpis
Aplikacja mobilna zaczyna istnieć
Następny wpis
PII jako wartość, nie jako string