Ich reichte einen Antrag ein, den ich an einige andere Architekten zur Codeüberprüfung schrieb. Einer von ihnen schrieb mir fast sofort zurück und sagte: "Verwenden Sie nicht" statisch ". Sie können keine automatisierten Tests mit statischen Klassen und Methoden schreiben." Statisch "ist zu vermeiden."
Ich habe geprüft, und 1/4 meiner Klassen sind mit "statisch" gekennzeichnet. Ich verwende static, wenn ich keine Instanz einer Klasse erstellen möchte, da die Klasse eine einzelne globale Klasse ist, die im gesamten Code verwendet wird.
Er fuhr fort, etwas zu erwähnen, das Spott, IOC / DI-Techniken beinhaltet, die mit statischem Code nicht verwendet werden können. Er sagt, es sei bedauerlich, wenn Bibliotheken von Drittanbietern aufgrund ihrer Unprüfbarkeit statisch sind.
Ist dieser andere Architekt richtig?
Update: Hier ist ein Beispiel:
APIManager - In dieser Klasse werden Wörterbücher von Drittanbieter-APIs gespeichert, die ich zum nächsten zulässigen Zeitpunkt aufrufe. Es erzwingt API-Nutzungsbeschränkungen, die viele Drittanbieter in ihren Nutzungsbedingungen haben. Ich benutze es überall dort, wo ich einen Drittanbieter-Dienst anrufe, indem ich Thread.Sleep (APIManager.GetWait ("ProviderXYZ")) aufrufe. bevor Sie den Anruf tätigen. Alles hier ist threadsicher und es funktioniert hervorragend mit der TPL in C #.
static
ist gut;static
Felder müssen sehr sorgfältig behandelt werden