In gran parte del mio codice oggigiorno, mi sono adattato a un approccio che penso di leggere nel contesto di "Codice pulito". È stato qualche anno fa e non riesco più a trovare la fonte, quindi mi piacerebbe sapere qual è il nome di questo pattern (e se è persino un pattern).
L'approccio è così semplice, ma potente che sono sconcertato su quanto sia difficile trovare fonti su questo, ma potrebbe essere semplicemente la mancanza di parole di ricerca appropriate.
L'approccio è, al fine di scrivere codice unit-testabile, per disaccoppiare la funzione e la presentazione di un'applicazione (duh) in modo tale che le due parti comunichino effettivamente tramite un'interfaccia che descrivo sempre come "HTTP- come".
Cioè, le funzioni che il tuo codice può fare sono un progetto, e il display ecc. sono un altro progetto. L'unica comunicazione tra i due viene effettuata utilizzando Context
classes, che accetta un Request
e restituiscono un Response
per qualsiasi cosa il tuo codice possa fare.
Quindi, ad es. se il tuo codice traduce una frase, avresti un TranslationContext
, insieme a TranslationRequest
(che ha una proprietà text
) e TranslationResponse
(con una proprietà text
che include il testo tradotto).
La classe Context
è l'unica interfaccia dal tuo codice applicazione reale al "fuori", mentre la "vista" è vista anche come esterna.
Dal lato della presentazione, si chiama
TranslationContext ctx = new TranslationContext(interfacedDbOrTextfile);
TranslationRequest req = new TranslationRequest("hallo welt");
TranslationResponse resp = ctx.Process(req);
Console.Write(resp.Text); // "hello world"
Inoltre, tutte le origini dati (DB, file di testo, ecc.) devono essere interfacciate e disaccoppiate quando passate al core, quindi puoi sempre sostituirle con cose UnitTestable come le stringhe in memoria invece dei file di testo o degli arraylisti invece delle righe del database .
È quello che sto descrivendo solo l'applicazione di modelli noti in un modo che non riesco a vedere? O è un modello che non è stato ancora descritto? Oppure sto usando parole diverse per cose che esistono già?