| sidebar_position | 3 |
|---|
-
В случаях, когда свойство класса получает свой тип на основании вызова функции или каких-то других вычислений, а не созданием конкретного объекта класса, следует явно указать тип свойства сразу в объявлении - это позволяет понимать какой именно тип данных имеет свойство, не вспоминая что делает функция и какой тип данных она возвращает:
Как не надо делать:
val isFollowed = followRepository.isFollow(participantOrTeamId)
Как лучше сделать:
val isFollowed: StateFlow<Boolean> = followRepository.isFollow(participantOrTeamId) .stateIn(viewModelScope, SharingStarted.Eagerly, false)
-
Имеет смысл явно указывать тип при объявлении переменной внутри функций и методов, которой присваивается результат крупного выражения:
Как не надо делать:
val currentUserStatus = usersList.asSequence() .filter { it.status == Online } .map(::handleUser) .find { it.name == UserName } ?.run(::getUserStatus)
Как лучше сделать:
val currentUserStatus: UserStatus = usersList.asSequence() .filter { it.status == Online } .map(::handleUser) .find { it.name == UserName } ?.run(::getUserStatus)
-
Не нужно явно прописывать тип везде, особенно в местах где явно очевиден тип переменной или это понятно из контекста. Лишнее указание типа только загромождает код программы, ухудшает читаемость.
Как не надо делать:
val usersList: List<User> = listOf<User>() val count: Int = 100 val productList: List<Product> = domainProducts.map(::domainToProduct) val messageText: String = message.text
Как лучше сделать:
val usersList = listOf<User>() val count = 100 val productList: List<Product> = domainProducts.map(::domainToProduct) val messageText: String = message.text