Золото-доклад по Type-Driven Design

Хочу поделиться интересным докладом от iOS разработчика из American Express.

Большинство идей, которые я реализовал на TypeScript в проектах Ozon Aquriring за последний год, взяты из этого доклада и тех материалов, на которые он ссылается.

Мне кажется, будет полезно увидеть, как пишут код такие же фронты, но на другой платформе, ознакомится с оригиналом и тем, на чём он основан, а позже в серии заметок я выложу свой конспект доклада с реализацией большинства идей на TypeScript.

Темы

  • Доменное моделирование на основе типов;
  • Функциональные паттерны и типы;
  • Превращение частичных функций в полные;
  • Превращение функций с сайд эффектами в чистые
  • Value Oriented Programming;
  • Функциональная dependency injection.

https://youtu.be/pbVjkY9fS8c?si=V7cWrtyXPgpyf-B2

Мысли

  • Несмотря на то, что в TS структурная, а не номинальная система типов, почти всё, что рассказано в докладе, можно реализовать на TS;

  • Я теперь по-другому смотрю на Redux/useReducer. За свою практику видел много кода, где редьюсеры используются, как value setter'ы, а в миддлварах лежала бизнес логика, которая не покрывалась unit-тестами, но зато были тривиальные тесты на редьюсеры, что вообще бессмысленно. Ладно, об этом позже;

  • Стоит также прочитать Redux is half of pattern. Это хорошо ляжет на доклад;

  • Важно, что когда я говорю "Redux", то это про идею использования редьюсеров с однонаправленным потоком данных, а не про сам фреймворк. Я в курсе, что его захейтил Даниил Абрамов, просто так фронту легче понять, что за концепции обсуждаются;

  • Рекомендую смотреть доклад в Obsidian с использованием плагина Timestamp Notes;

Вдохновляет

  • Идея разрабатывать веб на связке Kotlin-JS, вместо TS-JS
  • Мысль, что ты можешь работать в области 5 лет и всё равно ещё будет море вещей, которые можно узнавать и чувствовать себя Незнайкой
  • Человек, придумавший мандарины без косточек
  • Запах весны. Сейчас суббота, открыто окно, дует приятный ветерок, а я сижу и почему-то вместо прогулки пытаюсь понять, как перевести фамилию Luposchainsky...

Тэги #typeDrivenDesign #юнитТестирование #фронтенды, #valueOrientedProgramming, #чистыеФункции, #functionalProgramming, #доклад, #swift, #ios, #patterns, #fcis

Материалы

  • Boundaries - доклад Гэри Бернхардта;
  • Parse, don’t validate - статья Алексис Кинг;
  • Domain Modeling Made Functional - книга Скотта Влашина;
  • Boolean Blindness - статья Роберта Харпера;
  • Algebraic blindness - статья Дэвида Лупощаинского;
  • Value-Oriented Programming - статья Мэтта Дипхауса;
  • Swiftology - блог Алексея Озуна;
Золото-доклад по Type-Driven Design
Хочу поделиться интересным докладом от iOS разработчика из American Express | Сетка — социальная сеть от hh.ru