Избегайте присвоения значения null значению в Kotlin

#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. Лучший способ — это то, что приводит к наиболее четкому коду, если только не существует узкого места в производительности, которое необходимо оптимизировать.