Po ~3 miesiącach dodatkowego wysiłku (o którym klient praktycznie nie wiedział) między dostarczaniem ficzerów udało nam się przemycić refaktor. Dzięki temu wczoraj miałem zaszczyt wywalić trochę makaronu \o/
4 files +21 -3701
Projekt nie jest wielki, więc nawet te -3,7k cieszy :)
no fajnie fajnie, całkiem fajnie śmiga ta apka, dużo szybciej niż przedtem, tylko czemu dostaję same 500tki?
:]
@superdurszlak: Odpowiedź admina: "Zawsze można zrobić, żeby było 500+" :]
Przyznam, że ten strach przed refaktorami mnie łamie. Ludzie wrzucają kolejne ficzery na proda (bo z tego żyją) - nikt nic nie powie. Ale powiedz tylko, że jest tam refaktor ...and everybody loses their minds
.
@jarekr000000: Bo refaktoring nie wiadomo jakie funkcjonalności rusza i czy są otestowane. Jak masz nowy feature to jak nie działa to nic się nie stanie i łatwo to przetestować
@anonimowy: jak długo możesz dodawać nowe funkcje bez robienia refaktoringów? Ile możesz tak nawrzucać zanim zaczniesz się bać ruszać kod?
@jarekr000000: jak dobrze zaplanujesz, podzielisz na moduły to bardzo długo
@UglyMan: Jakbym zawsze dobrze planował to fakt, że rafaktora nigdy bym nie potrzebował. To jest jakieś rozwiązanie. Dodajmy do tego jeszcze prikaz pisania bez błędów i jest super.
@jarekr000000: tak naprawdę zależy dużo od ludzi i rozwiązania. Moim zdaniem cos takiego jak "sprint na refaktoring" jest bez sensu. Jak masz dołożyć nową funkcjonalność i ona zahacz o jakieś rzeczy które należy zmienić, to należy je zmieć przy robieniu tej zmiany. Oczywiście są systemy, które przekroczyły masę krytyczną kupy i należy zaorać i zrobić od nowa - taki refaktoring na 100%.
Oczywiście są systemy, które przekroczyły masę krytyczną kupy i należy zaorać i zrobić od nowa - taki refaktoring na 100%.
To też potrafi się źle skończyć. Pracowałem kiedyś w małej firmie która padła przez pomysł przepisywania od nowa. No ale oni przepisywali na Javę EE więc nawet lepiej
@KamilAdam: Oczywiście - nie jedna firma na tym upadła (netscape np). No ale jak masz sytuacje, że refaktor dotyka więcej jak połowę kodu to nie bardzo jest juz co ratować.
@UglyMan: oczywiście sprint na refaktoring
to nonsens. Odnoszę się do postu: między dostarczaniem ficzerów udało nam się przemycić refaktor
. Tak się to robi. Najlepiej gdy refaktor dotyczy rzeczy ruszanych przy nowych funkcjach/zmianach (trudno zresztą inaczej przemycić). Tu się zgadzamy i myśle, że coś podobnego zrobił autor.
@jarekr000000: to uczucie gdy czytam twój komentarz, a obecnie robię razem z zespołem kilkosobowym już 2 miesiąc refaktoru, który potrwa jeszcze 4 miesiące :D
byłem w pełni świadomy na co się piszę :D ogólnie to jedno z moich największych wyzwań zawodowych (łatwiej byłoby od nowa napisać), także bawię się świetnie
Mam za sobą doświadczenia udanych / wieloletnich refaktorów... ale to jednak wyglądało tak, że stawialiśmy sobie cel - docelową architekturę i małymy krokami przemycaliśmy to na PRODa. Nic się nie kisiło w praniu dłużej niż kilka tygodni. Przez co oczywiście było dużo więcej pracy (może nawet 2x więcej), ale przynajmniej projekt nie umar. (W sumie była jedna kiszonka - dorobienie na samym początku sensownych testów (integracyjnych) do początkowo zastanego wielkiego koprolitu
- to chyba trwało pół roku, bo staralismy sie kodu produkcyjnego nie ruszać, było bardzo trudno).
mniej więcej tak to wygląda, przemycamy ten refaktor etapami i wszystko dłużej trwa przez ciągłą synchronizację z prodem
Tylko jesteśmy dedykowani do tego i w sumie nie zajmujemy się dodawaniem nowych funkcji lub zmianą zachowania. A mimo to biznes na to pozwala, cuda :P
Refaktoring to imho naturalna część programowania, jak trzeba to robić po kryjomu albo po godzinach to coś jest nie tak. Trzeba to tylko zrobić rozsądnie. Jednym z przykładów jest choćby Allegro, które przeszło z monolitu w PHP na architekturę mikrousługową na JVM, czy https://comma.ai/ gdzie przeszli z TensorFlow na PyTorch. Refaktor/Rewrite dzieje sie też w Tesli (https://thedriven.io/2020/09/23/tesla-does-fundamental-rewrite-of-full-self-driving-autonomous-software/). Przykładów można znaleźć na pewno więcej.
Jednym z przykładów [refaktoringu] jest choćby Allegro
Ludzie chyba nadużywają pojęcia refaktoring. Refaktoring to zmiana implementacji bez zmiany interfejsu
. Niektóre definicje dodają w celu późniejszego łatwiejszego dodawania nowych funkcjonalności
. Czyli kolokwialnie refaktoring to posprzątanie metody/funkcji, klasy, pakietu/modułu. To co było w Alledrogo to był redizajn czyli po polsku zaoranie wszystkiego do gołej ziemi i zrobienie od początku
. Nawet mesjasza DDD ściągnęli żeby im wytłumaczył jak mają to nową wersję Aledrogo
@KamilAdam: wszystko zależy od tego gdzie postawisz granice interfejsu. Jeżeli uznasz za nią najbardziej zewnętrzne API HTTP lub nawet UI (jako interfejs człowiek <-> system) to zaoranie Allegro teoretycznie można by nazwać rafaktoringiem. :D
@victordeleco2 To był autor czerwonej księgi, albo niebieskiej księgi. Już nie pamietam :(
Verhnon jeszcze lepszy ;) co nie zmienia faktu, że możliwość zaproszenia takiego autorytetu do firmy i wdrożenie tego to duża rzecz
Vernon ma u mnie plusy za wbicie na talk Johna de Goes o zio prelude. Myślałem, że DDDowcy takie tematy olewają.
Nie no Vernon mniej nudzi. Ale są ludzie których prędzej da się słuchać jak Mathias Verraes, Nick Tune. Ale i Tak to wszyscy mają manierę sprzedawania tego jako silver bullet.
I to jest dobry refactoring, a nie "dej 3 sprinty na refactor, mam chory koD!" :P Takie rzeczy chyba zawsze cieszą :D