Ad esempio, supponi di scrivere un'app in Java .
La tua app comunica con un server API scritto in Python .
Il server Python comunica con un SQL database.
Hai anche un sito web per la tua app scritto in JavaScript .
Con 4 lingue diverse, è facile finire per ripetere essenzialmente le stesse strutture di dati 4 volte diverse.
Ad esempio, un tipo User
potrebbe apparire come questo (pseudocodice):
type User {
integer id;
string name;
timestamp birthday;
}
Ogni parte del progetto richiederebbe un qualche tipo di rappresentazione per User
. Le parti Java e Python necessiterebbero di due diverse dichiarazioni class
. Il database avrebbe bisogno di una dichiarazione della tabella User
. E il sito di front-end dovrebbe rappresentare anche un User
.
La ripetizione di questo tipo 4 volte differenti infrange il principio Don't-Repeat-Yourself . Inoltre, vi è il problema che se il tipo User
viene modificato, è necessario ripetere queste modifiche in ogni parte diversa del progetto.
So che la libreria protobuf di Google offre una sorta di soluzione a questo problema in cui si scrive una struttura dati utilizzando una sintassi speciale e quindi la libreria genera una dichiarazione di struttura per te in più linguaggi di programmazione diversi. Ma questo ancora non affronta il problema di dover ripetere la logica di validazione per i tuoi tipi.
Qualcuno ha suggerimenti o link a libri / post di blog su questo?