Ключевое: Не используйте LET только для проверки null

Материал про использование let я увидел на канале Android Live, а оригинальная статья вот.

Не вижу смысла переводить всю статью, так как пост на канале сделал отличную выжимку. А я просто добавлю отсебятины.

Для начала let. Это шикарно. С null безопасным Kotlin просто невозможно не знать эту специальную функцию, которая будет выполнена только в случае, если переменная…собственно не null.

Но как показывает автор статьи, иногда есть более подходящие решения для некоторых случаев и бездумно летить всё подряд тоже не нужно.

Итак, когда лучше не использовать let

⭕️ для проверки на null immutable переменной. Я полностью согласен, что a?.let { foo(a) } симпатичнее, но она генерирует лишнюю переменную в байткоде, в отличии от аналога if not null. Вряд ли вы заметите огромную разницу, но если можно избежать создания лишней переменной, то почему бы этого не сделать.

⭕️ для использования переменных только внутри let лучше использовать run, который освободит нас от личшних it. Например, мы хотим что-то сделать с webView:

⭕️ если хотите передать переменную дальше по цепочке. Например, если вы хотите указать размер списка, если он не null, а дальше что-то продолжить делать с ним. Альтернативным решением будет использование also, хотя это тоже не идеальное решение (так как там тоже будет несколько ?).

Когда же тогда использовать let

🟢 для проверки на null mutable переменной. Тут хорошо подходит let, так как он избавляет нас от дополнительного ? (а он может задолбать) при взаимодействии с переменной.

🟢 если хотите использовать переменную снаружи от let. Например, если вы хотите проициализировать другие переменные тем классом, что был у вас:

Это удобнее для review кода, чем функция run. Впрочем и run может подойти, если имена будут с какими-то префиксами или вроде того.

🟢 когда у вас есть проверка из цепочки ?. Например:

Итак. LET удобный инструмент, но у него есть более удобные для некоторых случаев альтернативы, и его тоже нужно использовать с умом.

Спасибо!

Добавить комментарий