#kotlin
#kotlin
Вопрос:
Как я мог бы избежать присвоения null списку пользователей в этом коде и получить такое же поведение? Является ли это плохой практикой?
fun update(type: Update) {
fun List<UserList>.filter(listType: ListType): UserList? = this.firstOrNull { userList -> userList.listType == listType }
val userList = if (model.list.isEmpty()) null else type.list.filter(getTabSelectedListType())
val listToShow = userList?.toShoppingWrapper(model.cart)?.also {
adapterShopping.update(it, type.updateCurrentList)
}
if (!listToShow.isNullOrEmpty()) {
with(binding) {
recyclerView.visible()
emptyLayoutMyProducts.emptyView.gone()
emptyLayoutFavorites.emptyView.gone()
emptyLayoutLists.emptyView.gone()
}
} else when (binding.tabLayout.getTabAt(binding.tabLayout.selectedTabPosition)?.tag) {
PRODUCTS -> showMyProductsEmptyLayout()
FAVORITES -> showFavoritesEmptyLayout()
}
}
Комментарии:
1. Пустой список был бы хорошим способом.
2. Использование не приводит к снижению производительности
emptyList()
, поскольку Kotlin использует одноэлементный объект для представления всех пустых списков, доступных только для чтения любого типа. Но какой в этом смысл? Вам придется усложнить следующие строки, чтобы приспособить их.3. Мне просто интересно, не является ли это плохой практикой делать это таким образом. Я предпочитаю это, потому что это упрощает код, но не уверен, что это лучший способ сделать это.
4. Лучший способ — это то, что приводит к наиболее четкому коду, если только не существует узкого места в производительности, которое необходимо оптимизировать.