Pisaliśmy kilka funkcjonalności, korzystając z dwóch serwisów, napisanych przez inny zespół. Do obu serwisów dostaliśmy api, które było w miarę dobrze udokumentowane. Napisaliśmy cały kod używając api, po czym okazało się, że do tych serwisów istnieje biblioteka/klient, który zawiera modele + metody wywołujące endpointy.
Dla wszystkich w zespole było to takie oczywiste, że teraz trzeba to wszystko przepisać na tego klienta, co dla mnie jest niezrozumiałe, bo wydaje się być to stratą czasu. Do tego już od początku okazało się, że modele są z dupy, zjadane są błędy, więc nie wiadomo do końca co się wywala. Dodatkowo używając endpointów mogliśmy o wiele więcej, a ten klient mocno wycina różne rzeczy, a wielu endpointów po prostu brakuje i trzeba teraz zmieniać sporo rzeczy, robić coś naokoło. Taki przykład api pozwala szukać użytkownika po emailu, username lub id, a klient tylko po username.
-
Takim największym argumentem było to, że nie trzeba tego pisać, ale mieliśmy już wszystko napisane.
-
Drugim argumentem było, że jeżeli coś zmieni się w api, to nie trzeba będzie zmieniać nic u nas, bo wystarczy podnieść wersję klienta. Tylko, że jak zmieni się klient, to może być tak, że i tak będziemy musieli coś zmienić. A druga rzecz, że jeżeli już teraz jest rozjazd pomiędzy tym klientem, a api, to może w ogóle nikt zmian nie zaktualizuje i będziemy musieli my tą bibliotekę aktualizować, albo część rzeczy przepisywać na wywołania api.
- Trzecim argumentem było to, że jak jest napisane, to na pewno jest dobrze i my nie mamy odpowiedzialności za to na sobie, tylko co można źle napisać wywołując webClient.post().uri(api/x) vs uglyService.Createuser(xxx) - jest to dokładnie to samo, tylko opakowane, a całą logikę wciąż mamy u siebie...