git-interactive

Code Review a spacje i inne pierdoły

Posted on Updated on

Oryginał na https://krzysztofmorcinek.wordpress.com/2017/11/24/code-review-a-spacje-i-inne-pierdoly/

Advertisements

Git przypadki użycia – refactoring w trakcie pisania kodu

Posted on Updated on

  1. Refactoryzowałem przeniesienie logiki w inne miejsce. Zmieniły się zależności jakie pobieraja serwisy => trzeba dostosować Unit Testy (MyServiceTests). Zmiany w UT polegaja jedynie na dodaniu dodatkowego parametru jaki wstrzykujemy do testowanego serwisu – zmiana w jednej klasie ale w kilku testach.
  2. Zauważyłem, że nasze testy powinny korzystać z SUT Factory (System Under Test) – tworzenie testowanego serwisu powinno być tylko w jednym miejscu aby ewentualne zmiany w zależnościach (konstruktor) tego serwisu wymagały tylko jednej zmiany.
  3. – commituje aktualnie zmieniony kod (aktualnie projekt się nie kompiluje), powiedzmy ze jednem na branchu “development”
    – przechodze na nowego brancha “sut-refactoring”, cofam sie “git reset –hard head^” o jeden commit do stanu sprzed refactoringu
    – wykonuje punkt 2) czyli refactoring do SUT, sprawdzam czy testy przechodza.
    – wracam “development”
    – pobieram jeden commit z poprzedniego brancha “git cherry-pick sut-refactoring”
    – zamieniam miejscami dwa ostatnie commity aby ten z sut-refactoring był wcześniej. “git rebase -i head^^” i zamieniam miejscami – konieczna znajomość rebase interactive
    – wprowadzam zmiany w teście MyServiceTests, teraz wystarczy tylko jedna zmiana w fabryce tworzacej testowany serwis (SUT Factory) – sprawdzam czy testy przechodza.
    – zmiany łaczace z ostatnim commitem (znowu znajomość rebase interactive)
  4. Implementuje metodę która była dotychczas stubem.
    private void HandleCopyButtonControl(FieldRenderingDefinition control)
    {
        // TODO: RQ-1234
    }
    

    Po zaimplmentowaniu okazało się, że miejsce z którego jest wołana metoda z bugiem i działało dotychczas tylko dlatego, że nasza metoda była pusta. Commitujemy. Zmieniamy tamto miejsce niezależnie (zamieniając ify na switcha), commitujemy. Zamieniamy commity miejscami.