Как преодолеть операторы if в КотлинеAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как преодолеть операторы if в Котлине

Сообщение Anonymous »


Привет,

Я думаю, что я не единственный разработчик Android и Kotlin, у которого есть «аллергия» на операторы if. Простая причина в том, что эти утверждения часто легко перерастают в какой-нибудь уродливый код. Например:

Код: Выделить всё

fun parseUserEvent(userEvent: UserEvent) {
when (userEvent) {
is UserEvent.A -> doSomething()
is UserEvent.B -> doSomethingElse()
is UserEvent.C -> doAnotherThing()
is UserEvent.D -> doSomethingDifferent()
// and so on
}
}
Мое решение этой проблемы — использовать явные обратные вызовы, которые заставляют меня каждый раз при добавлении нового события думать, уместно ли добавить его к существующему событию или рассмотреть другое дизайн. Например:

Код: Выделить всё

fun onUserIconClicked(event: UserIconsEvent) {
event
.onPersonalAreaClicked {
// handle personal area click
}
.onFavoritesClicked {
// handle favorites click
}
.onOrdersClicked {
// handle orders click
}
}
где

Код: Выделить всё

fun UserIconsEvent.onPersonalAreaClicked(action: () -> Unit): UserIconsEvent {
if (this is UserIconsEvent.OnPersonalAreaClicked) {
action()
}
return this
}
Существуют ли другие способы избежать блоков кода «неограниченно когда»?

Подробнее здесь: https://stackoverflow.com/questions/791 ... -in-kotlin
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»