Pracuję nad projektem oprogramowania, w którym musimy zbudować trzy interfejsy API. Jeden dla kanału bankowości domowej , jeden dla kanału agencji i trzeci dla kanału mobilnego .
Interfejs API agencji jest najbardziej kompletny, ponieważ ma wszystkie funkcje .. następnie nieco mniej Home API, a następnie API mobilne.
Architekci tutaj stworzyli wspólną warstwę (międzykanałowe usługi EJB wspólne dla wszystkich interfejsów API). Ale interfejsy API są różne.
Na razie nie ma dużej różnicy między interfejsami API. Duży zespół zaczął od kanału agencji, a my dostosowujemy go teraz do kanału domowego. Po prostu wzbogacamy obiekty specjalnie do naszej aplikacji domowej. W przeciwnym razie kod jest 95% podobny między interfejsami API. Interfejsy API są oparte na Spring MVC i mają (kontrolery, modele i niektóre narzędzia).
Zasadniczo kontrolery wykonują mapowanie BO do ChannelObject (wydaje mi się, że nie jest to właściwe miejsce do zrobienia tego), a także dodatkowe narzędzia i serializatory. Na razie wszystko jest zduplikowane. Mówią, że powodem duplikacji jest to, że chcą niezależnych interfejsów API. „Jeśli jutro chcemy innego zachowania dla domu niż agencji czy telefonu komórkowego, nie będziemy walczyć !!”
Czy istnieje przypadek, w którym powinniśmy zaakceptować duplikat kodu?