Переход от явной к декларативной итерации

TL;DR:Избегайте итераций на основе индекса. Используйте функции сбора данных более высокого порядка.

Проблема

  • Нарушение инкапсуляции
  • Отсутствие декларативности

Решение

  • Выбирайте forEach() или итераторы высокого порядка.
  • Сокрытие деталей реализации открывает такие возможности, как кеширование, прокси, отложенная загрузка и многое другое.

Образец кода

Неправильный

for(i in 0 until colors.count()) {
    print(colors[i])
}

// For Kotlin 1.9 and above, the 'until' can (and should) be
// substituted with '..<' to denote a range from 0 to 
// colors.count(), excluding the end.

Верно

for(color in colors) {
    println(color)
}

// Utilizing closures and arrow functions
colors.forEach { println(it) }

Исключения

Если предметная область требует сопоставления элементов с натуральными числами, такими как индексы, тогда может быть достаточно начального метода.

Всегда стремитесь проводить параллели с реальными сценариями.

Заключение

Многие разработчики игнорируют этот запах кода, считая его незначительной деталью.

Тем не менее, именно накопление таких декларативных нюансов действительно повышает качество кода.

Будьте в курсе моих последних мыслей и идей, подписавшись на мою информационную рассылку. Свяжитесь со мной в LinkedIn или Twitter. Давайте оставаться на связи и продолжать разговор!

Спасибо, что дочитали до конца. Пожалуйста, подумайте о том, чтобы подписаться на автора и эту публикацию. Посетите Stackademic, чтобы узнать больше о том, как мы демократизируем бесплатное образование в области программирования во всем мире

Кредиты

Оригинально опубликовано на https://yonatankarp.com.