Częsta edycja jednej klasy może przyczyniać się do błędów w kodzie, konfliktów i bałaganu. Klasa taka, na pewno nie spełnia OCP (Open/Close Principle) – jest zamknięta na rozszerzenia, dlatego dodanie każdej nowej funkcjonalności powoduje jej edycję.
Do najczęściej edytowanych klas zazwyczaj należą klasy typu. Main
, MainActivity
, DataManager
– ponieważ tam zazwyczaj programiści dodają najwięcej kodu. Każde dodanie nowej funkcjonalności do takiej aplikacji wymusza zmianę w tych klasach – w MainActivity
trzeba dodać nowy element menu a w DataManager
nowy model danych.
Istnieje prosty sposób na sprawdzenie takich potencjalnych punktów zapalnych:
git log --name-status $*| \ grep -E '[A-z]*(.kt|.java)'| \ cut -c3-500| \ sort| \ uniq -c| \ sort -n -r| \ head --lines=100
Jeśli jakiś plik znajduje się na samej górze listy, to nie znaczy, że od razu musisz go refaktorować. Zrób to przy najbliższej próbie edycji, ale pod kątem zachodzących zmian. Próba naprawienia wszystkiego na raz może pochłonąć wiele godzin pracy i mieć marny efekt. Rób to stopniowo i z głową a zminimalizuje to ryzyko błędów i konfliktów.
Skrypt ten nie działa niestety na zmianę nazwy klasy i przeniesienie klasy do innych pakietów, ale jeśli w projekcie nie było radykalnych porządków w ostatnim czasie to powinien spełnić oczekiwania 90% osób.