Конспекты текстов про Elm

Делайте невозможное состояние невозможным в Elm

Конспект доклада «Making Impossible States Impossible» by Richard Feldman

Короткий (25 минут) доклад, в котором можно подсмотреть различные идеи для создания «невозможного состояния».

Ключевая идея «impossible state», в том, что с помощью модели данных в Elm мы должны стремиться к тому, чтобы эту модель нельзя было представить в виде «некорректного» состояния.

(пояснение от меня): Грубо говоря, если у вас в приложении есть 2 чекбокса и выбран должен быть только один, то «2 выбранных чекбокса» в один момент времени — невозможное состояние. Следовательно, нам нужно спроектировать модель так, чтобы это было невозможно, чтобы компилятор ругался и подсказывал.

Первая ситуация, которую рассматривает Ричард — модель данных из elm-css. Обычный type alias record заменяется на более подробную структуру.

С помощью такого разделения удалось разделить Declaration на различные сущности. Теперь легче проверить валидность будущего css файла, так как «импорты», «неймспейсы» и непосредственно сами стили — разные типы. Было же — все в кучу.

Далее проскальзывает мысль: тестирование — это хорошо, но «невозможность» еще лучше. Так как и тестировать не нужно.

[8:11] Чем лучше Data Model тем чище API

Затем разбирается приложение «Опрос», в котором мы хотим отображать вопрос(ы) и textarea для ввода ответа. Разбираются возможные варианты проектирования модели данных с постепенным добавлением функционала.

[12:31] затронут момент, как можно достичь «хотя бы 1 вопрос должен существовать» в List вопросов. Заметьте, мы не проверяем List.length, а мы заранее хотим сделать так, чтобы было невозможно оставить List вопросов пустым!

[14:40] Упомянута структура zip-лист (гугл), о которой стоит почитать отдельно.

[18:46] вариант деструктурирования кастом-тайпа с одним вариантом:

Если вы уже знакомы с Elm, то вероятно заметили заготовку для непрозрачного типа (opaque type).

[21:24] — делаем последнюю фичу доклада — Status bar. Где столкнемся с уже знакомой проблемой: в модели у нас два предустановленных типа (2 maybe), которые в результате дают 4 комбинации. Но! Не все эти комбинации возможны в реальном приложении. Вывод: лучше сделать свой кастомный тип, со всеми возможными вариантами (коих в докладе 3, а не 4).

Итого: отличный доклад, куча разных техник по созданию различных моделей в elm. Рекомендую к просмотру.

Макс

Share
Published by
Макс
Tags: elmelm-text

Recent Posts

Elm #2: Загрузка и отображение json

Сегодня будем использовать parcel и IntelliJ IDEA Community Edition. Все инструменты бесплатные. Инициализация elm проекта…

5 лет ago

Elm для React/Redux разработчиков (Elm #1: Знакомимся с Elm)

На данном вебинаре мы знакомились с языком Elm проводя параллели между Elm и Redux, поэтому…

5 лет ago

Масштабируем Elm-приложение (конспект)

Richard Feldman рассказывает как масштабировать Elm приложение без боли. Показаны техники: extended records, подход narrow…

5 лет ago

Elm видео, за ноябрь 2019

В данной заметке вы найдете конспект видео по Elm, которые я посмотрел в ноябре 2019.…

5 лет ago

Итоги 2019. Что учить фронтендеру в 2020?

Итоги года 2019 // Max Frontend Покажи мне свой гитхаб, и я скажу работал ли…

5 лет ago

Почему мне стоит изучать Elm?

Почему стоит изучать Elm? Потому что это интересный вызов, редкие (но вкусные) вакансии и хороший…

5 лет ago