Ich muss eine veraltete Methode auslaufen lassen. Mir ist das [Obsolete]
Attribut bekannt. Verfügt Microsoft über einen empfohlenen Leitfaden für bewährte Verfahren?
Hier ist mein aktueller Plan:
A. Ich möchte keine neue Baugruppe erstellen, da Entwickler ihren Projekten einen neuen Verweis hinzufügen müssten, und ich erwarte von meinem Chef und seinen Mitarbeitern viel Kummer, wenn sie dies tun müssen. Wir pflegen auch nicht mehrere Baugruppenversionen. Wir verwenden nur die neueste Version. Eine Änderung dieser Vorgehensweise würde eine Änderung unseres Bereitstellungsprozesses erfordern, was ein großes Problem darstellt (Menschen müssen lernen, wie man Dinge mit TFS anstelle von FinalBuilder macht, und sie dazu bringen, FinalBuilder aufzugeben).
B. Markieren Sie die alte Methode als veraltet.
C. Da sich die Implementierung ändert (nicht die Methodensignatur), muss ich die Methode umbenennen, anstatt eine Überladung zu erstellen. Um die Benutzer auf die richtige Methode aufmerksam zu machen, möchte ich dem [Obsolete]
Attribut eine Nachricht hinzufügen . Dieser Teil stört mich, weil ich nur die Methode von der Verbindungszeichenfolge entkopple. Da ich jedoch keine neue Baugruppe hinzufüge, sehe ich keinen Weg daran vorbei.
Ergebnis:
[Obsolete("Please don't use this anymore because it does not implement IMyDbProvider. Use XXX instead.")];
/// <summary>
///
/// </summary>
/// <param name="settingName"></param>
/// <returns></returns>
public static Dictionary<string, Setting> ReadSettings(string settingName)
{
return ReadSettings(settingName, SomeGeneralClass.ConnectionString);
}
public Dictionary<string, Setting> ReadSettings2(string settingName)
{
return ReadSettings(settingName);// IMyDbProvider.ConnectionString private member added to class. Probably have to make this an instance method.
}
Ich verstehe nicht Wenn sich die Implementierung ändert, die Signatur jedoch nicht, warum sollten Sie dies jemals tun? Lassen Sie die "alte" Methode die neue und verbesserte Implementierung verwenden. Entwickler, die diese API verwenden, verdrehen die Augen, wenn sie eine Methode mit genau derselben Signatur und Verfallswarnungen für ihre vorhandenen Methodenaufrufe sehen. (Können Sie sich eine Zeit vorstellen, in der dies jemals in einer API passiert ist?)
Wenn Sie nicht sicher sind, ob das Ändern der zugrunde liegenden Implementierung dieser Methode funktioniert, überprüfen Sie das Verhalten mit Komponententests vor und nach dem Ändern der Implementierung.
quelle