Не помещайте интерфейс в общий код
Проведите границу, чтобы общий слой оставался переносимым
«Не помещайте интерфейс в общий код» — бесплатный урок Kotlin Multiplatform Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Kotlin Multiplatform Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Kotlin Multiplatform Academy содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
Draw a Clear Line
Shared code holds logic; the UI stays native. Drawing this line early keeps your common module portable to every target.
Why UI Does Not Belong
Android views and SwiftUI are platform-specific. Putting them in commonMain would break compilation on the other target instantly.
Logic Is the Reusable Part
Calculations, rules and models are what truly repeat across apps. That logic is the high-value code worth sharing once.
Return Data, Not Widgets
Shared functions should hand back plain data, like a total or a label string, never a button or a view.
fun cartLabel(total: Double): String = "Total due: " + totalNo Toasts or Alerts
Showing a message is a UI job. Shared code returns the text to show; each app decides how to display it.
No Colors or Styling
Hex colors and fonts are presentation. Keep styling in each platform's UI so designers can tune apps independently.
Expose State to the UI
Shared code can publish state the UI watches. The apps render it however they like, but never the other way around.
data class CartState(val total: Double, val itemCount: Int)The Dependency Direction
UI depends on shared code, never the reverse. This one-way arrow is what keeps the common module clean and reusable.
Compose MP Is the Exception
Compose Multiplatform can share UI too, but it is opt-in. Your core logic module still stays UI-free and lightweight.
A Quick Smell Test
If a shared file imports a platform UI package, that is a smell. Move that code out into the right app module.
The Payoff
A UI-free shared layer compiles everywhere and adds new targets with ease. Discipline here is what makes KMP pay off. 🚀
Quick Check
What should a shared function return instead of a UI widget?
Recap: Logic Shared, UI Native
You kept widgets, colors and alerts out of common code and let it expose only data the native UIs render. ✅
Часто задаваемые вопросы
Урок «Не помещайте интерфейс в общий код» бесплатный?
Да — полный текст урока «Не помещайте интерфейс в общий код» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Kotlin Multiplatform Academy, подпишись на CoddyKit PRO. Курс Kotlin Multiplatform Academy содержит 4 уроков всего.
Чему я научусь в уроке «Не помещайте интерфейс в общий код»?
Проведите границу, чтобы общий слой оставался переносимым Ты практикуешь Kotlin Multiplatform Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Kotlin Multiplatform Academy?
Предыдущий опыт не требуется. Kotlin Multiplatform Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Не помещайте интерфейс в общий код»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Kotlin Multiplatform Academy?
Да. Каждый урок Kotlin Multiplatform Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Общий калькулятор цены и налогов
- Форматирование валют и чисел
- Бизнес-правила как чистые функции
- Не помещайте интерфейс в общий код