class Account(id: Long)
у тебя есть функция
fun getUserAccount(userId: Long, accountId: Long): Account?
И ты такой думаешь,
блин тут при вызове функции легко можно передать гавно,
например в неправильном порядке указать id шники
Потом вспоминаешь о inline классах
inline class UserId(value: Long)
data class User(id: UserId)
inline class AccountId(value: Long)
data class Account(id: Long)
fun getUserAccount(userId: UserId, accountId: AccountId): Account?
оооо ништяк, теперь то перепутать нельзя и не будет оверхеда по памяти
И пишешь дальше
fun findUsers(ids: List<UserId>): List<User>
И бууум, у тебя всё к херам боксится
Подожи, но даже long всегда боксятся в коллекциях на JVM
Обсуждают сегодня