и посмотреть медиа
Kotlin | Вопросы собесов
и посмотреть медиа
Вопросы для Kotlin-разработчиков с ответами.
Вопросы для Kotlin-разработчиков с ответами.
AI бот для озвучки текста и клонирования голоса в Telegram. Создавай аудио с помощью нейросети быстро и просто.
Вопросы на Kotlin-собеседованиях: расширения, корутины, коллекции. С примерами кода и объяснениями для Android и backend.
🤔 Зачем нужно разделять отображение и бизнес-логику? Разделение UI и бизнес-логики делает код понятнее, тестируемее и проще в поддержке. Это ключевой принцип чистой архитектуры (Clean Architecture) и паттернов MVP, MVVM, MVI. 🚩Что такое UI и бизнес-логика? Плохой код (UI + логика в Activity) class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val button = findViewById(R.id.button) button.setOnClickListener { val result = fetchData() // ❌ Логика в UI button.text = result } } fun fetchData(): String { return "Данные с сервера" // ❌ Тут должна быть ViewModel } } 🚩Как правильно разделять UI и логику? (MVVM) Разделим код на Activity + ViewModel MainActivity (только UI) class MainActivity : AppCompatActivity() { private val viewModel: MainViewModel by viewModels() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val button = findViewById(R.id.button) viewModel.text.observe(this) { text -> button.text = text // ✅ UI обновляется из ViewModel } button.setOnClickListener { viewModel.loadData() // ✅ Вызываем бизнес-логику } } } MainViewModel (бизнес-логика) class MainViewModel : ViewModel() { private val _text = MutableLiveData() val text: LiveData = _text fun loadData() { _text.value = "Данные с сервера" // ✅ UI не знает, откуда данные } } Ставь 👍 и забирай 📚 Базу знаний
Открыть канал и посмотреть медиаТолько зарегистрированные пользователи могут делиться своим мнением.
Станьте первым, кто поделится своим впечатлением об этом ресурсе!