Ho presentato un'applicazione che ho scritto ad altri architetti per la revisione del codice. Uno di questi mi ha quasi immediatamente scritto e ha detto "Non usare" statico. "Non puoi scrivere test automatici con classi e metodi statici." Statico "deve essere evitato."
Ho controllato e completamente 1/4 delle mie classi sono contrassegnate come "statiche". Uso static quando non creerò un'istanza di una classe perché la classe è una singola classe globale utilizzata in tutto il codice.
Ha proseguito menzionando qualcosa che implica tecniche di derisione, IOC / DI che non possono essere usate con il codice statico. Dice che è spiacevole quando le librerie di terze parti sono 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. Mette in atto i limiti di utilizzo dell'API che molte terze parti hanno nei loro termini di servizio. Lo uso ovunque io chiami un servizio di terze parti chiamando Thread.Sleep (APIManager.GetWait ("ProviderXYZ")); prima di effettuare la chiamata. Tutto qui è thread-safe e funziona alla grande con TPL in C #.