Указание типов переменных и свойств класса
В случаях, когда свойство класса получает свой тип на основании вызова функции или каких-то других вычислений, а не созданием конкретного объекта класса, следует явно указать тип свойства сразу в объявлении - это позволяет понимать какой именно тип данных имеет свойство, не вспоминая что делает функция и какой тип данных она возвращает:
Как не надо делать:
val isFollowed = followRepository.isFollow(participantOrTeamId)
Как лучше сделать:
val isFollowed: LiveData<Boolean> = followRepository.isFollow(participantOrTeamId)
Имеет смысл явно указывать тип при объявлении переменной внутри функций и методов, которой присваивается результат крупного выражения:
Как не надо делать:
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 = domainProducts.map(::domainToProduct)
val messageText = message.text