Prawo Hyruma i wyzwanie obserwowalnych zachowań systemu
Każda dziedzina ma swoje niepisane zasady, a programowanie nie jest wyjątkiem.
Prawo Hyruma można zaobserwować w działaniu w całym krajobrazie technologicznym. Nie ma znaczenia, czy pracujesz z Unity, tworzysz frontend, czy rozwijasz systemy backendowe – ta zasada ma zastosowanie wszędzie.
Czym więc dokładnie jest?
Stworzone przez Hyruma Wrighta prawo brzmi:
W gruncie rzeczy, gdy twoje API zyska wystarczającą popularność, każde obserwowalne zachowanie – nawet jeśli nie jest częścią oficjalnego, udokumentowanego kontraktu – nieuchronnie stanie się dla kogoś zależnością. Oznacza to, że granica między „publicznym API” a „prywatnymi szczegółami implementacji” zaciera się, co prowadzi do kilku istotnych implikacji:
Zmiany w publicznym API: Ponieważ jest to oficjalny interfejs, większość użytkowników będzie polegać na jego zadeklarowanym zachowaniu. Wszelkie modyfikacje w tym obszarze muszą być skrupulatnie zaplanowane, dokładnie udokumentowane i najlepiej wersjonowane (pomyśl o Semantic Versioning), aby zapobiec niezamierzonym zmianom powodującym błędy.
Refaktoryzacja kodu wewnętrznego: Nawet zmiany w tym, co uważasz za „wewnętrzne” lub „prywatne” szczegóły implementacji, wymagają szczególnej ostrożności. Jeśli wewnętrzne zachowanie jest obserwowalne, ktoś, gdzieś, może na nim polegać. Jego zmiana może zepsuć zależne projekty – co jest szczególnie kosztownym błędem w przypadku wewnętrznych systemów firmowych, gdzie wymówka „zmieniłem tylko prywatne API!” nie przejdzie, jeśli produkcja padnie i wpłynie to na finanse firmy.
Prawo Hyruma jest, niestety, nieuniknioną rzeczywistością dla każdego oprogramowania, które jest adoptowane przez innych deweloperów. Chociaż staranna enkapsulacja i ukrywanie informacji mogą pomóc, w miarę ewolucji systemu i wzrostu jego użytkowania, niektóre zachowania nieuchronnie staną się „de facto” API dla twoich użytkowników.
Jaki jest więc kluczowy wniosek? Podchodź do każdej refaktoryzacji z ostrożnością, stosuj strategie wersjonowania i zawsze bierz pod uwagę potencjalny wpływ każdej zmiany na dalsze etapy – nawet w przypadku rzekomo „wewnętrznych” zachowań. Twoi koledzy (i wyniki finansowe twojej firmy) będą ci za to wdzięczni.