Jako przykład powiedz, że piszesz aplikację w Javie .
Twoja aplikacja komunikuje się z serwerem API napisanym w języku Python .
Serwer Python komunikuje się z bazą danych SQL .
Masz także stronę internetową dla swojej aplikacji napisaną w JavaScript .
Dzięki 4 różnym językom łatwo jest powtarzać zasadniczo te same struktury danych 4 razy.
Na przykład User
typ może wyglądać tak (pseudokod):
type User {
integer id;
string name;
timestamp birthday;
}
Każda część projektu wymagałaby pewnego rodzaju reprezentacji User
. Części Java i Python wymagałyby dwóch różnych class
deklaracji. Baza danych potrzebowałaby User
deklaracji tabeli. Strona frontonu również musiałaby reprezentować User
.
Powtarzanie tego typu 4 razy naprawdę łamie zasadę „ Nie powtarzaj się ”. Istnieje również problem polegający na tym, że jeśli User
typ zostanie zmieniony, zmiany te należy powtórzyć w każdej innej części projektu.
Wiem, że biblioteka protobuf firmy Google oferuje rodzaj rozwiązania tego problemu, w którym piszesz strukturę danych przy użyciu specjalnej składni, a następnie biblioteka generuje dla ciebie deklarację struktury w wielu różnych językach programowania. Ale to wciąż nie rozwiązuje problemu powtarzania logiki sprawdzania poprawności dla twoich typów.
Czy ktoś ma jakieś sugestie lub linki do książek / postów na blogu na ten temat?
Repeating this type 4 different times really breaks the Don't-Repeat-Yourself principle
. Nie, nie ma. Masz 4 różne systemy, które robią różne rzeczy. Za daleko bierzesz SUCHO. Z mojego doświadczenia wynika, że rodzaj ponownego użycia, który chcesz zrobić, jest zalążkiem zła, ponieważ wprowadza ścisłe połączenie. To nawet gorsze niż powtarzanie User
4 razy w 4 różnych językach. W środowiskach rozproszonych problem stanowi sprzężenie. DRY nie jest.