Istnieje kilka problemów, które łączą się ze sobą, aby refaktoryzacja była trudna w tym środowisku. Pomieszane są z tym pewne problemy nietechniczne („ale to kwestia zarządzania i bitwa, którą jeszcze nie wygrałem”).
Pierwszym problemem, na który należy zwrócić uwagę, jest długo działająca gałąź. Te oddziały mają trudności ze śledzeniem zmian poza zasięgiem dewelopera. Aby rozwiązać ten problem:
- Kiedy kod jest kompletny - daj mu jeszcze raz (pozwól, aby obsługa klienta spojrzała na niego, jeśli chcą), ale szybko połącz go w celu opracowania, aby inne zależne od niego zmiany mogły zostać wykryte, a zmiany, które konflikt są wcześnie identyfikowane w trakcie.
- Jeśli z jakiegoś powodu jakiś brach staje się długotrwały w czasie trwania refaktoryzacji, dobrą praktyką jest łączenie się ze stabilnej do gałęzi w celu wychwycenia zmian i refaktoryzacji. Często minimalizuje to konflikty i niespodzianki podczas łączenia z gałęzi funkcji do gałęzi stabilnej.
- Wszystkie testy integracji muszą być wykonywane w wersjach - nie w funkcjach . W tym środowisku funkcje mogą, ale nie muszą być w pełni zintegrowane z systemem. Chociaż można wykonać kontrolę poprawności funkcji w oderwaniu, nie rozpoznaje ona problemów po wydaniu.
- Od czasu ukończenia kodu do scalenia (nazwijmy go rozwijaniem - rozgałęzienie z master / stable / release ma swoje własne problemy z niezauważaniem najnowszych zmian programistycznych) nie powinno być zbyt długie. Im dłużej czekasz, tym więcej utraconej wiedzy i tym trudniej jest zintegrować kod z innymi liniami kodu.
Inną kwestią, która się z tym wiąże, jest to, że nawiązałem do powyższych punktów, to zmieniająca się rola gałęzi w miarę upływu czasu. Zaczyna się jako gałąź programistyczna, w której programiści się zobowiązują, a następnie staje się obszarem testowania (jakie testy są tutaj wykonywane, które mogą mieć znaczenie w całej aplikacji?), Które następnie są scalane w stabilne (i prawdopodobnie wydawane - czy to jest testowane ponownie?).
Dzięki krótszemu czasowi rozpoczęcia i zakończenia funkcji refaktoryzacja jest łatwiejsza do odbioru przez inne oddziały.
Zachęć programistów do zdobycia całego środowiska. Tylko wybierające zmiany mogą prowadzić do ... powiedzmy, interesujących środowisk programistycznych. Podczas gdy zbieranie wiśni ma swoje zastosowanie, jest to domyślny tryb wprowadzania zmian do gałęzi, co może być niepokojące.
Refaktoryzacja jest czymś, co idealnie odbywa się w sposób ciągły, a jeśli nie w sposób ciągły, ilekroć dochodzi do odrobiny przestojów. Rozgałęź, wykonaj proste refaktoryzowanie, uruchom testy jednostkowe, aby sprawdzić, czy wszystko nadal działa (jego jednostka przetestowana, prawda? Prawda? ), A następnie ponownie połącz w stabilne. Przekaż informacje innym programistom, aby wprowadzić zmiany, które zostały refaktoryzowane do ich własnych oddziałów.
Ważne jest, aby programiści posiadali jakość kodu. Podczas gdy kierunek funkcji pochodzi z zewnątrz, a przydziały czasu często nie są nasze, jakość kodu jest czymś, z czego trzeba być dumnym i mieć czas.
Przy poszukiwaniu czasu na spłatę długu technicznego przydatne mogą być następujące pytania:
Możesz także przyjrzeć się narzędziom, takim jak sonar, które mogą pomóc zidentyfikować obszary kodu, które wymagają najwięcej pracy przy refaktoryzacji. Wtyczki dług techniczny jest coś, co może być wykorzystane do punktu pomóc akumulacji długu w czasie w bazie kodu.
Często trzeba zauważyć, że zwrot z inwestycji w zadłużenie techniczne to szybszy czas realizacji funkcji i poprawek błędów od zespołu programistów.