Prima di porre la mia domanda, ecco il contesto: sto lavorando su una parte di un software relativamente grande. Nella sua forma più semplice ci sono 3 livelli del software che consentono di chiamarli livello inferiore, livello intermedio e livello superiore. Sto lavorando sullo strato intermedio. Il lavoro del livello intermedio è molto semplice, recupera le informazioni dal livello inferiore e le consegna al livello superiore. Può anche ricevere varie richieste dal livello superiore ed eseguire azioni sul livello inferiore e fornire il feedback al livello superiore.
Il livello inferiore è un componente di terze parti, quindi abbiamo concordato un modello di dati che sarebbe comune tra livello intermedio e livello superiore. Questi due livelli comunicano tramite un protocollo di comunicazione inter process proprietario. Il modello di dati viene fornito come parte del framework contenente le librerie per il protocollo di comunicazione proprietario (di conseguenza, le intestazioni contenenti i modelli utilizzano lo spazio dei nomi del framework e non il livello intermedio).
Il mio approccio: il modo in cui ho implementato era utilizzare direttamente il modello di dati in tutto il livello intermedio, sebbene usasse lo spazio dei nomi del protocollo di comunicazione, poiché lo considero il modello di dati del livello intermedio. Quindi, vorrei leggere direttamente i dati dal livello inferiore nel modello dati, inviarlo attraverso vari sottostrati all'interno del livello intermedio e al livello superiore sul protocollo di comunicazione.
Uno dei miei colleghi ha criticato il mio approccio, sostenendo che è il modello di dati del livello comm e cosa succederebbe se lo strato comm si modificasse domani o fosse sostituito con un altro, dovrò sostituire ogni singola istanza in cui l'ho usato attraverso fuori dallo strato intermedio. Quindi, ha suggerito di utilizzare un modello di dati interno che verrebbe utilizzato per leggere dal livello inferiore e inviare questo modello al punto in cui invio i dati sul livello comm allo strato superiore. Prima di inviare i dati dovrei eseguire la mappatura dei dati sul tipo di dati del livello comm.
Non credo che abbia ragione, dato che è il modello di dati del mezzo e l'ho definito io stesso. Solo perché deve essere inviato sul livello comm, viene fornito con il framework e quindi ha uno spazio dei nomi del framework. Ma questo non lo rende il tipo di dati di livello comm. Inoltre, se il livello comm e quindi lo spazio dei nomi cambiano, non sarebbe un grosso problema, poiché posso risolvere questo problema con una semplice definizione.
Quindi, la domanda dopo una lunga storia: ha davvero senso eseguire mappature con il livello stesso? Come giudichi la situazione?