Почему val лучше чем var

Ответ

val предпочтительнее var, потому что обеспечивает иммутабельность (неизменяемость), что делает код более предсказуемым и безопасным. С val значение присваивается один раз и не может быть изменено, уменьшая риск ошибок из-за неожиданных изменений состояния. Это особенно полезно в многопоточных средах, где неизменяемые данные исключают гонки данных.

Пример:

val name = "Alice" // Неизменяемое
var age = 25       // Изменяемое

name = "Bob" // Ошибка компиляции
age = 26     // Корректно

Используйте var только когда значение действительно должно изменяться.

Ответ 18+ 🔞

А, ну слушай, вот эта тема про val и var — это вообще, ёпта, основа основ, но народ её так часто проёбывает, что просто удивление пиздец.

Представь себе: val — это как дал честное слово другу. Один раз сказал — и всё, заднюю не дают. Присвоил значение и спи спокойно, оно уже никуда не денется. А var — это как обещание, которое ты меняешь каждые пять минут. С утра сказал, что будешь пить чай, к обеду уже кофе, а к вечеру — пиво. Код с такими переменными — это сплошной распиздяй, за которым надо глаз да глаз.

Вот смотри, простой пример, чтоб совсем понятно было:

val name = "Alice" // Вот это надёжно, как швейцарские часы. Прибили гвоздём.
var age = 25       // А это — зыбкая почва. Сегодня 25, а завтра кто его знает.

name = "Bob" // Ошибка компиляции! Компилятор тебе сразу: "Какого хуя? Ты же уже назвал её Элис!"
age = 26     // А тут всё ок. Подкрутил возраст — и молодцом.

Вот в чём, блядь, вся соль. val делает твой код предсказуемым. Ты как будто строишь дом из кирпича, а не из песка. Особенно когда у тебя там потоки какие-нибудь бегают, гомосеки налетели — с val ты можешь быть уверен, что пока один поток читает, другой ему это значение под носом не схавает и не перепишет. Доверия к такому коду — овердохуища.

А var — это уже хитрая жопа. Используй его только в самом крайнем случае, когда значение реально должно прыгать туда-сюда, как мартышлюшка на банане. Например, счётчик в цикле — ну куда от него денешься, там var и нужен. А так — налегай на val. Чем больше в коде иммутабельного дерьма, тем проще его потом понимать, тестировать и не орать "ёб твою мать, кто это тут поменял?!" посреди ночи.

Короче, правило простое: по умолчанию всегда val. А var — это когда уже терпения ноль ебать и без изменяемой переменной реально никак.