Usuwanie flag¶
Nadmiar Feature Flag w systemie niepotrzebnie zaciemnia kod. Czasami konkretna Feature Flaga steruje też implementacją, jaka ma być wykorzystywana przez nas system.
Aby nie komplikować sobie życia, należy Feature Flagi usuwać z kodu, gdy przestają być potrzebne.
Załóżmy, że tworzyliśmy nową funkcję. Jej działanie zamknęliśmy za Feature Flag'ą. Wdrożyliśmy nowy kod na produkcję i przełączyliśmy stan tej flagi wszystkim użytkownikom.
Gdy minie trochę czasu od przełączenia flagi wszystkim użytkownikom (tzw. Grace period
), powinniśmy usunąć flagę z kodu.
Grace period
Czas jaki mija od udostępnienia funkcji wszystkim użytkownikom do momentu, w którym jesteśmy pewni, że nierealny jest scenariusz, w którym tą funkcję wyłączymy. Uznajemy, że wszystko działa prawidłowo i nie ma potrzeby wycofywania się z tego wdrożenia.
Czas ten powinien być dobierany zgodnie z intuicją zespołu i zachowaniem użytkowników systemu. W każdym projekcie i przy każdej funkcji może to być inna długość.
Jeśli implementacja wymagała napisania if'a
i wszyscy użytkownicy realnie działają na konfiguracji, w której ten if
zawsze się wykonuje, to śmiało możemy go usunąć, zostawiając kod, który do tej pory był opakowany tym warunkiem.
Jeśli zastosowana flaga decydowała, czy należy użyć starej, czy nowej implementacji jakiegoś algorytmu i wszyscy użytkownicy używają konfiguracji, w której stary kod nigdy nie jest uruchamiany, to śmiało możemy się pozbyć starego kodu, jak i flagi, która sterowała wyborem implementacji.
Jeśli stworzyliśmy testy automatyczne uzależnione od tego, że usuwana flaga musi być włączona, to możemy usunąć fragmenty, które powodują pomijanie tych testów, gdy flaga jest wyłączona. Od tego momentu, te testy powinny być uruchamiane za każdym razem.
Jeśli mamy w kodzie testy, które sprawdzały działanie systemu, gdy usuwana flaga była wyłączona, to te testy nie są już potrzebne i możemy je usunąć.