Kotlin. Exhaustive when и полное покрытие кода тестами

Поділитися
Вставка
  • Опубліковано 5 лют 2025
  • Kotlin как язык требует, чтобы конструкция `when` (эквивалент switch)
    была "насыщенной", полной (exhausitive) и соответственно мы иногда вынуждены добавлять `else` даже если по факту мы перебрали все известные варианты. И так как мы не можем реально попасть в этот бранч кода - он остается не покрытым тестами и страдает coverge.
    В этом видео показан плохой, хороший и самый хороший вариант решения этой проблемы.
    ИТАК ЕСЛИ ВЫ ЗНАЕТЕ В ЧЕМ ПРОБЛЕМА ПОКРЫТИЯ У НЕДОЗАКРЫТОГО when
    МОЖЕТЕ МОТАТЬ ДО 19:02 !!! ЕСЛИ ХОТИТЕ ПОСМОТРЕТЬ ПЛОХОЕ РЕШЕНИЕ
    ИЛИ СРАЗУ ДО 31:18 если хотите быстрого ответа
    1. 01:04 знакомимся со средой в которой будем работать и что там к чему
    2. 02:52 начинаем выполнять условное ТЗ
    3. 07:00 собс твенно получили exhausitive when и разобрали его свойства и немного обсуждаем
    (можно минуту промотать если понятно в чем смысл)
    4. 08:15 логика продукта начинает усложняться и мы сначала пытаемся удержаться в виде простого when
    5. 12:28 наконец поняли что просто плоской матрицы уже нет и начинаем делать логику на правилах
    (можно промотать если понятно к чему идет)
    6. 15:43 наконец поняли что просто when(action) уже не годится
    (можно мотануть если понятно как пишется такой код)
    7. 19:02 все мы дописали вроде все варианты кода, но kotlin требует else и происходит противоречие
    exhusitive и покрытия кода
    8. 21:30 разбираем самый плохой вариант, как он затаивается и потом выпрыгивает в проде
    ЕСЛИ НЕ ИНТЕРЕСНО СМОТРЕТЬ ДО ЧЕГО ДОВОДИТ ПЛОХОЙ ВАРИАНТ МОЖНО МОТАНУТЬ ДО 31:18
    9. 31:18 собственно summum bonum - делаем идеальный вариант!!!
    #kotlin #coverage #when #unittesting

КОМЕНТАРІ • 4

  • @kirienkovs
    @kirienkovs 2 роки тому

    Спасибо за столь познавательные видео!

  • @BelyeFartuki
    @BelyeFartuki 2 роки тому

    Отличное видео!

  • @AlexSmile-y2x
    @AlexSmile-y2x Рік тому

    всегда говорил, что котлин придумали прогеры, которые оч хотели говнокодит на джаве, но им не давали)) почитайте про паттерн стратегия, в адекватном коде никакие свитчкейсы, when и прочие костыли не нужны, все решается баналной мапой и полиморфизмом

  • @hrisogona9330
    @hrisogona9330 Рік тому

    почему не в тёмной теме? как это смотреть теперь