Что такое нестабильный тип интерфейса

Ответ

Нестабильный тип интерфейса (Unstable API) — это API, который может измениться в будущих версиях фреймворка или библиотеки. Обычно помечается аннотациями типа @UnstableApi или упоминается в документации.

Пример:

@UnstableApi
interface ExperimentalMediaApi {
    fun play()
    fun pause()
}

Использование таких API не рекомендуется в продакшн-коде, так как изменения могут сломать приложение при обновлении зависимостей. Лучше искать альтернативы или быть готовым к миграции.

Ответ 18+ 🔞

Э, слушай, давай проясним одну вещь, которая многих на проектах вгоняет в ступор. Вот есть у тебя в коде какая-нибудь библиотека или фреймворк, и там торчит какой-то метод или целый интерфейс, помеченный как @UnstableApi. Ну, или в документации жирным так и написано: «ЭТО НЕСТАБИЛЬНО, МОЖЕТ ПОМЕНЯТЬСЯ».

Вот смотри, пример, чтобы было понятнее, что это за зверь такой:

@UnstableApi
interface ExperimentalMediaApi {
    fun play()
    fun pause()
}

Видишь эту аннотацию сверху? Это, блядь, не просто так. Это тебе прямой намёк от разработчиков библиотеки, кричащий: «Чувак, ты веришь? Мы это только что на коленке слепили, пока пили кофе. Оно вроде работает, но завтра мы можем проснуться с другой идеей и всё это дело переписать, и тебе будет хиросима и нигерсраки».

И вот тут главный момент, который многие тупо игнорируют, а потом охуевают. Если ты это используешь в своём продакшн-коде — ты ходишь по охуенно тонкому льду. Серьёзно. Потому что придёт новая версия библиотеки, они там что-нибудь переименуют, сигнатуру поменяют или вообще выпилят этот интерфейс к чёртовой матери. И твоё приложение просто накроется медным тазом в самый неподходящий момент. Доверия к такому API — ноль ебать.

Что делать-то? Варианта, по сути, два, и оба не сахар. Первый — искать альтернативу, стабильный способ сделать то же самое. Это самый правильный путь, хоть и может быть дольше. Второй — если альтернатив нет и без этой фичи никак, то будь готов к миграции. Заложи в план, что при обновлении зависимости тебе, возможно, придётся потратить день, чтобы всё переписать. И не ной потом, что тебя не предупреждали.

Короче, подозрение ебать чувствую ко всему, что помечено как нестабильное. Лучше десять раз подумай, прежде чем впендюривать это в основной код. А то будет тебе не апдейт, а сплошной чих-пых тебя в сраку.