Что такое булевая абстракция
Что проверяют
Устойчивого термина «булевая абстракция» в индустрии нет, и это часть проверки: станете ли вы пересказывать придуманное определение или уточните, что имеется в виду. Обычно за формулировкой стоит умение моделировать состояние экрана и видеть границы логических флагов.
Как отвечать
Сначала уточните вопрос, затем разберите суть: сведение состояния к набору логических признаков. Булево значение уместно, когда признак действительно двузначный и независим от остальных, например доступность кнопки или наличие выданного разрешения.
Оно ломается, когда признаки взаимоисключающие. Три поля вроде загрузки, ошибки и пустого списка дают восемь сочетаний, из которых осмысленны три, а остальные ждут своего бага. В Android корректная замена это герметичная иерархия состояния:
sealed interface UiState {
data object Loading : UiState
data class Content(val items: List<Item>) : UiState
data class Error(val code: String) : UiState
}Компилятор потребует разобрать все ветки в when, и невозможные сочетания перестают существовать. Отдельно скажите про логические параметры в сигнатурах: вызов с двумя значениями true и false на месте аргументов нечитаем, лучше перечисление или именованные аргументы Kotlin.
Где спотыкаются
Уверенно выдают определение незнакомого термина. Уточняющий вопрос звучит сильнее складной выдумки, и проверяют на собеседовании чаще именно это.
Держат экран на связке флагов и получают индикатор загрузки поверх текста ошибки. В Compose добавляется мигание при рекомпозиции, потому что промежуточное сочетание флагов успевает отрисоваться.
Заводят логическое поле с допустимым отсутствием значения и получают три состояния вместо двух. Почти всегда это признак недомоделированного домена: отсутствие ответа выражают отдельным типом, а не третьим значением флага.