Ответ
Да, люблю, но подхожу к этому осознанно. Новые технологии добавляю, когда они решают конкретные проблемы или дают значимые преимущества (производительность, поддержка, безопасность).
Перед внедрением оцениваю:
- Зрелость (стабильность, сообщество)
- Совместимость (минимальная версия Android, зависимости)
- Сложность миграции
- Долгосрочная поддержка
Пример: замена AsyncTask на корутины — улучшило читаемость кода и управление потоками.
// Было
AsyncTask.execute { /* ... */ }
// Стало
viewModelScope.launch(Dispatchers.IO) { /* ... */ }
Главное — не гнаться за модным, а выбирать технологии, которые действительно улучшают проект.
Ответ 18+ 🔞
А, ну это же про новые штуки в разработке! Люблю, конечно, но не как какой-нибудь распиздяй, который каждую неделю библиотеки меняет, потому что в блоге прочитал. Подхожу осознанно, ёпта.
Добавляю новую технологию только в двух случаях: либо когда старая уже реально пиздец как тормозит и глючит, либо когда новая даёт такой прирост, что игнорировать её — себя не уважать. Ну там, производительность, безопасность, поддержка кода — чтобы не было потом волнения ебать, как это всё поддерживать.
Перед тем как впендюрить что-то новое в проект, я устраиваю этому фреймворку полноценный допрос с пристрастием. Подозрение ебать чувствую ко всему новому, пока не проверю.
Смотрю на зрелость. Не буду же я ставить какую-нибудь библиотеку-однодневку, которая через месяц накроется медным тазом, а я останусь с проблемой размером с хуй с горы. Нужно стабильное, с живым сообществом.
Совместимость — это святое. Чтобы не вышло, что ради одной крутой фичи надо минималку API поднимать до небес и половину пользователей посылать нахуй. И чтобы зависимости не начали друг с другом драться, как гомосеки налетели.
Сложность миграции — вот где собака зарыта. Если чтобы переехать на новую технологию, надо переписать половину кода и есть риск всё сломать, то это пиздопроебибна идея. Надо, чтобы переход был плавным, а не как прыжок с парашютом без парашюта.
И, конечно, долгосрочная поддержка. Мне не нужен инструмент, который забросят через полгода. Я не хочу потом самому становиться его единственным maintainer'ом, это терпения ноль ебать.
Вот смотри, классический пример — AsyncTask. Старая, добрая, знакомая всем посиделка. Но когда появились корутины, стало ясно — это просто небо и земля. Читаемость кода улучшилась овердохуища, управление потоками стало в разы проще. Миграция была оправдана на все сто.
// Было: олдскул, громоздко, управление жизненным циклом — отдельная боль
AsyncTask.execute { /* ... */ }
// Стало: чисто, элегантно, и всё в рамках ViewModel
viewModelScope.launch(Dispatchers.IO) { /* ... */ }
Так что суть в чём: не надо гнаться за каждой мартышлюшкой-библиотекой, которая мелькнула на горизонте. Надо включать голову, э бошка думай. Выбирать то, что реально делает проект лучше, а не просто добавляет строчку в резюме. А то можно и на хитрой жопе поскользнуться.