Sono l'unico della mia squadra che sostiene di aggiungere un po 'di implicità a favore della riduzione della base di codice e della ripetizione decrescente. Eppure non voglio essere una "mela cattiva" parziale che gioca contro il design del lavoro che è stato creato prima del mio arrivo a questo lavoro. I tentativi di cambiare l'approccio possono essere presi troppo personali da alcuni compagni di squadra e solo dicendo "il mio è meglio del tuo" promette il risultato opposto.
Le prove per scoprire gli svantaggi proposti e i vantaggi della soluzione esistente sono il modo migliore per combattere i pregiudizi, il cosiddetto gioco del "sostenitore del diavolo". Sfortunatamente, a volte è abbastanza difficile.
L'ampia domanda ha il seguente aspetto:
Esistono linee guida chiare (misurabili?) (oltre a "dipende") per impostare il grado di esplicitazione / inderzione.
La domanda ristretta è abbastanza locale, tuttavia ho il coraggio di chiedere l'elenco dei pro e contro di entrambi gli approcci.
La nostra applicazione server ha diversi livelli: servizio, business logic, DAL.
Per qualsiasi modifica dei dati (crea + aggiorna, non cancella), salviamo anche il timbro utente autenticato, quindi rendi la storia che ha fatto cosa.
L'implementazione corrente ottiene il nome utente dal framework MVC / WCF e lo passa attraverso i layer come argomento aggiuntivo ai metodi solo per passare il valore al livello successivo fino a raggiungere l'oggetto sessione che gestisce la transazione. (DAL)
Offro l'uso dell'approccio AmbientContext: Userstamp viene impostato una volta all'inizio della pipeline di elaborazione delle richieste e quindi scorre implicitamente con il flusso di lavoro di esecuzione (rispetto asincrono) ed è accessibile da qualsiasi livello, se necessario. Molto simile a Thread.CurrentPrincipal
.