Назад к задачам
ЯндексПолучайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Junior — Middle+
27
Анализ и рефакторинг существующего UseCase‑класса
Компании, где спрашивали:
Условие задачи
В проекте присутствует реализация UseCase, написанная другим разработчиком. Требуется разобраться, какую бизнес‑логику реализует данный код, и провести его улучшение, сделав структуру более понятной и поддерживаемой.
class MainUseCase @Inject constructor(
private val firstUseCase: FirstUseCase,
private val secondUseCase: SecondUseCase
) {
@CheckResult
fun execute(result: Result): Completable {
val orderedItems = result.items
return if (orderedItems.isEmpty()) {
Completable.complete()
} else {
firstUseCase.getCartItems()
.map { cartItems ->
orderedItems.mapNotNull { orderItem ->
cartItems.firstOrNull { it.id == orderItem.id }
}
}
.map { cartItem ->
CartItemId(
cartItemId = cartItem.id,
skuId = cartItem.skuId,
bundleId = cartItem.bundleId,
isPrimaryBundleItem = cartItem.isPrimaryBundleItem
)
}
.flatMapCompletable {
if (it.isEmpty()) {
Completable.complete()
} else {
secondUseCase.deleteItems(it)
}
}
}
}
}