24.04
This commit is contained in:
64
kmp/2026-04-23_Вопросы-КМП2.md
Normal file
64
kmp/2026-04-23_Вопросы-КМП2.md
Normal file
@@ -0,0 +1,64 @@
|
||||
Google Doc URL: https://docs.google.com/document/d/1DfJsbyVZ98udo_hvU1DUagGYkTHabW0wMH5T5DvmCYI/edit?usp=sharing
|
||||
WARNING: НЕ РЕДАКТИРОВАТЬ ТУТ, ЭТО ЧЕРНОВИК
|
||||
|
||||
|
||||
Привет, коллеги,
|
||||
|
||||
на созвоне в четверг 16.04 команда Android представила команде КМП пример с авторизацией для обсуждения потенциального подхода КМП-2.
|
||||
|
||||
По итогу созвона у команды КМП возникли следующие вопросы к КМП-2:
|
||||
|
||||
===
|
||||
Вопрос №1
|
||||
===
|
||||
Риск нарушения принципов Single source of truth (SSOT, Единственный источник истины) и Single Responsibility Principle (SRP, Единственная ответственность)
|
||||
|
||||
В КМП-1 следование SSOT и SRP достигается шудами/редьюсерами: один шуд отвечает за что-либо конкретное. Например, в реализации контактов на КМП-1 шуд/редьюсер contShouldResetContactsVisibility отвечает за видимость списка контактов на экране, поэтому всегда можно найти концы (кто меняет видимость и по каким условиям она меняется).
|
||||
|
||||
===
|
||||
Вопрос №2
|
||||
===
|
||||
Риск конфликта разных механизмов диспетчеризации (многопоточности)
|
||||
|
||||
В КМП-2 предполагается использование Flow, Coroutines и подобных технологий, которые имеют свой жизненный цикл, отличающийся от жизненного цикла на платформах Apple.
|
||||
|
||||
В КМП-1 многопоточность находится вне общего кода КМП, т.е. находится в эффектах,
|
||||
на стороне конкретной платформы, используя те инструменты, которые принято использовать
|
||||
на конкретной платформе.
|
||||
|
||||
===
|
||||
Вопрос №3
|
||||
===
|
||||
Риск падения производительности
|
||||
|
||||
Как следствие из предыдущего пункта, использование нестандартного для конкретной платформы
|
||||
механизма диспетчеризации может приводить к гонке данных и трудновоспроизводимым просадкам производительности.
|
||||
|
||||
===
|
||||
Вопрос №4
|
||||
===
|
||||
Заявленный отказ от нативной поддержки Desktop
|
||||
|
||||
КМП-2 предполагает отказ от нативных приложений Linux, macOS, Windows. Это приведёт
|
||||
к потере компанией компетенций команды Desktop, собравшей огромное количество
|
||||
граблей при поддержки трёх систем: Linux, macOS, Windows. Все эти компетенции и грабли
|
||||
придётся собирать с нуля при использовании подхода аля Electron. На поиск и исправление
|
||||
заново найденных граблей уйдёт огромное количество сил и времени.
|
||||
|
||||
КМП-1, со своей стороны, интегрируется (нативно, через Kotlin Native) в Desktop
|
||||
ровно на тех же правах логики,
|
||||
как это происходит с Android и iOS: оставляя диспетчеризацию (многопоточность),
|
||||
работу с оборудованием, сетью и т.п. на усмотрение конкретной платформы. Таким образом,
|
||||
КМП-1 сохраняет компетенции, иcключает просадку по платформе Desktop, исключает
|
||||
повторный поиск и исправления уже собранных граблей.
|
||||
|
||||
|
||||
Есть ещё несколько вопросов, которые будет уместно задать лишь при наличии
|
||||
КМП-2 на руках, т.к. пока КМП-2 существует лишь на бумаге. КМП-1, со своей стороны,
|
||||
в рамках контактов уже прошёл первичное проверку командой тестирования и готов к повторной.
|
||||
|
||||
С уважением,
|
||||
Михаил.
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user