Когда вам нужно внести изменения в API, у которого уже есть некоторые пользователи, вероятно, лучший способ - отказаться от старых вызовов API и поощрять использование новых вызовов.
Удаление возможности старых вызовов API, вероятно, нарушит функциональность старого кода, поэтому некоторые разработчики, использующие ваш "старый" API, вероятно, будут несколько недовольны.
Если ваш язык предоставляет способы указать, что определенная функциональность устарела, он может служить для пользователей индикатором прекращения использования старых вызовов API и перехода к новым вызовам. В Java тег @deprecated
javadoc может содержать примечания в документации о том, что функция устарела, или из Java 5 аннотация @Deprecated
может использоваться для повышения время предупреждения о вызовах устаревших функций API.
Кроме того, было бы неплохо дать некоторые советы и подсказки по переходу от старого API к новому API, чтобы побудить людей использовать новый способ взаимодействия с API. Имея примеры и примеры кода о том, что делать, а что нет, пользователи API смогут писать код в соответствии с новым предпочтительным способом.
Будет трудно изменить публичный API, но с некоторой осторожностью при переходе от старого к новому, я считаю, что количество боли, причиняемой пользователям API, может быть в определенной степени смягчено .
Вот статья о Как и когда следует устаревать API от Sun, в которой может быть предоставлена дополнительная информация о том, когда целесообразно объявить устаревшими части API.
Также, спасибо Дэвиду Шмитту, который добавил, что атрибут Obsolete
в .NET похож на аннотацию @Deprecated
в Java. (К сожалению, редактирование было перезаписано моим редактированием, поскольку мы оба редактировали этот ответ одновременно.)