вступление

Многие программисты используют Unix-подобную систему для разработки и обслуживания веб-приложений. Мы часто используем Unix-команды, такие как: grep, cat, mkdir, ls, ps и т.д. Все эти команды имеют общие свойства: они решают конкретные задачи, названия их утилит понятны, они инкапсулированы, идемпотентны и удобны в использовании. Команды Unix — это процесс. Поскольку у одного процесса есть вход, а у другого — выход, и их можно подставлять, то логично предположить, что они могут быть связаны. Такой подход называется конвейером.

Например:

cat mix.exs | grep elixir | uniq | sort

  1. Прочтите файл mix.exs.
  2. Входные данные захватываются подстрокой «эликсир»
  3. Дубликаты удаляются
  4. Вводимые данные сортируются и отображаются на экране

Основная идея заключается в том, что команды Unix имеют много общего с Elixir и функциональным программированием. Мы часто используем механизм конвейера в Elixir, и наша функция выглядит как команда Unix, которая перетаскивает данные через цепочку функций, каждая из которых действует как преобразователь или фильтр. Когда я начинаю создавать новую услугу или решать новую бизнес-задачу, я стараюсь разрабатывать функции и программы как отдельные утилиты Unix, следуя приведенным ниже принципам:

  1. Важно понимать, что вы делаете и зачем.
  2. Всегда спрашивайте себя, почему было выбрано именно это решение, как оно вписывается в концепцию системы и как его будут использовать другие разработчики.
  3. Также важна логика организации кода, контекст, имена классов модулей и функций.
  4. Четко должна быть логическая цепочка, которая как путеводная звезда прокладывает путь к тому, как пользоваться и где найти ту или иную функцию. Если нет четкой логики и принципов в организации кода, систему становится сложно поддерживать и сложно расширять.
  5. Важно не усложнять систему при проектировании как швейцарский складной нож, иногда простые решения надежнее, понятнее и проще расширять, чем сложную логику.

Теперь давайте попробуем реализовать этот принцип в реальной жизни, чтобы решить реальные проблемы при разработке веб-приложения Elixir.

Параметр шаблона проектирования — Часть 1

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

Железнодорожное программирование — Часть 2

Этот шаблон помогает создать структуру нашей программы в виде спецификации, обрабатывать ошибки, решать вложенные операторы case и упрощать сложную логику с помощью принципа SOLID.

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

Переключение функций — часть 3 (в процессе)

В этой главе рассматривается принцип, используемый для внедрения новых частей функциональности для конкретных пользователей, функции включения/выключения, A/B-тестирования или тестирования комплексной функциональности в производственной среде.

Протокол — часть 4 (в процессе)

Один из способов создать Фабрику паттернов для Эликсира — использовать Протокол, в этой главе мы увидим, как это сделать.

Ведущий — Часть 5 (в процессе)

Этот шаблон помогает нам подготовить и упростить данные для нашего представления, скрыть операторы if, case и код организации.

Организация GenServer — часть 6 (в процессе)

В этой главе представлены некоторые принципы организации нашего GenServer, какие ошибки мы можем совершить, если не понимаем, как работает GenServer.