Dodanie nowej metody (lub metod) do interfejsu API powinno odbywać się w taki sposób, aby nie miało żadnych skutków ubocznych dla istniejącego interfejsu API. Co najważniejsze, ktoś, kto nadal korzysta ze starego interfejsu API tak, jakby nowy interfejs API nie istnieje, nie powinien mieć na niego wpływu. Korzystanie ze starego interfejsu API również nie powinno mieć nieoczekiwanych skutków ubocznych dla nowego interfejsu API.
Jeśli którakolwiek z istniejących metod interfejsu API zostanie zastąpiona nowymi, nie usuwaj ich od razu. Oznacz je jako przestarzałe i podaj wyjaśnienie, czego należy użyć w zamian. Dzięki temu użytkownicy Twojego kodu ostrzegają, że przyszłe wersje mogą go nie obsługiwać zamiast łamać kod bez ostrzeżenia.
Jeśli nowe i stare interfejsy API są niezgodne i nie mogą żyć razem bez niepożądanych efektów ubocznych, rozdziel je i udokumentuj, że jeśli nowy interfejs API ma zostać przyjęty, stary interfejs API musi zostać całkowicie wycofany. Jest to mniej pożądane, ponieważ zawsze znajdzie się ktoś, kto spróbuje użyć obu i denerwuje się, gdy to nie działa.
Ponieważ zapytałeś konkretnie o .NET, możesz przeczytać ten artykuł o wycofaniu w .NET, który prowadzi do ObsoleteAttribute
(użytego w poniższym przykładzie):
using System;
public sealed class App {
static void Main() {
// The line below causes the compiler to issue a warning:
// 'App.SomeDeprecatedMethod()' is obsolete: 'Do not call this method.'
SomeDeprecatedMethod();
}
// The method below is marked with the ObsoleteAttribute.
// Any code that attempts to call this method will get a warning.
[Obsolete("Do not call this method.")]
private static void SomeDeprecatedMethod() { }
}