Qual è la differenza tra un dettaglio di implementazione e un problema tecnico

3

Volevo solo assicurarmi di comprendere e articolare correttamente la differenza tra questi due concetti.

Ho sempre pensato a un dettaglio di implementazione come il funzionamento interno di una classe concreta dietro la sua interfaccia pubblica esposta.

es .: Utente: getEmailAddress restituisce una stringa. Può recuperare questi dati da uno dei due attributi privati denominati "email" o "indirizzo email".

Chiunque invochi questo metodo non si preoccupa se riceve un indirizzo email. Questo è un dettaglio di implementazione.

Ho notato che le "preoccupazioni tecniche" d'altra parte spesso emergono durante le discussioni su Layered Architecture in cui il livello Infrastructure è responsabile del "come" del nostro livello Dominio che descrive il problema e definisce un insieme di interfacce per affrontare questo problema.

es.: "In che modo" invio effettivamente questa e-mail, persisto di questi dati o ho cancellato questa password come descritto nel dominio?

Una o più classi all'interno del livello infrastruttura "possono" implementare la stessa interfaccia e queste classi che condividono un'interfaccia risolveranno per definizione lo stesso problema tecnico (invio di posta, dati persistenti, ecc.).

Diresti che queste definizioni sono accurate?

Grazie.

    
posta user2308097 21.05.2016 - 19:12
fonte

1 risposta

3

Ogni volta che descrivo qualcosa come un "Dettaglio di implementazione", sto dicendo che l'utente non ha bisogno di sapere come viene eseguito, a patto che venga eseguito.

Ad esempio, in C un puntatore indica effettivamente un indirizzo di memoria nel computer, ma non si può dire la stessa cosa di un riferimento in Java (anche se i puntatori e i riferimenti eseguono essenzialmente la stessa funzione), perché il modo in cui tale riferimento è rappresentato è un dettaglio di implementazione

Persone che non hanno familiarità con questa caratteristica dei linguaggi gestiti a volte fanno domande come "questo tipo di valore viene creato sull'heap o sullo stack?" Ancora una volta, questo è un dettaglio di implementazione. È un altro modo per dire: "Questo non è qualcosa a cui dovresti preoccuparti". I dettagli di implementazione sono cose che sono astratte dall'utente.

"Problema tecnico" è un termine molto più ampio e molto più generale. I dettagli di implementazione sono preoccupazioni tecniche, ma lo sono anche le prestazioni, la chiarezza del codice, la scalabilità, l'architettura, l'uptime, lo spazio di archiviazione e così via. Praticamente tutto ciò che è tecnico di cui potresti essere preoccupato è una "preoccupazione tecnica".

    
risposta data 21.05.2016 - 20:14
fonte

Leggi altre domande sui tag