Ho presentato una domanda che ho scritto ad alcuni altri architetti per la revisione del codice. Uno di loro quasi immediatamente mi ha risposto e ha detto "Non usare" statico ". Non puoi scrivere test automatici con classi e metodi statici." Statico "è da evitare".
Ho controllato e 1/4 delle mie classi sono contrassegnate come "statiche". Uso statico quando non ho intenzione di creare un'istanza di una classe perché la classe è una singola classe globale utilizzata in tutto il codice.
Ha continuato a menzionare qualcosa che coinvolge derisione, tecniche IOC / DI che non possono essere utilizzate con codice statico. Dice che è un peccato che le librerie di terze parti siano statiche a causa della loro non testabilità.
Questo altro architetto è corretto?
aggiornamento: ecco un esempio:
APIManager: questa classe mantiene i dizionari delle API di terze parti che sto chiamando insieme al prossimo tempo consentito. Impone limiti di utilizzo dell'API che molte terze parti hanno nei loro termini di servizio. Lo uso ovunque sto chiamando un servizio di terze parti chiamando Thread.Sleep (APIManager.GetWait ("ProviderXYZ")); prima di effettuare la chiamata. Tutto qui è thread-safe e funziona benissimo con il TPL in C #.
static
è ok;static
i campi devono essere trattati con molta attenzione