
вступление
Многие программисты используют Unix-подобную систему для разработки и обслуживания веб-приложений. Мы часто используем Unix-команды, такие как: grep, cat, mkdir, ls, ps и т.д. Все эти команды имеют общие свойства: они решают конкретные задачи, названия их утилит понятны, они инкапсулированы, идемпотентны и удобны в использовании. Команды Unix — это процесс. Поскольку у одного процесса есть вход, а у другого — выход, и их можно подставлять, то логично предположить, что они могут быть связаны. Такой подход называется конвейером.
Например:
cat mix.exs | grep elixir | uniq | sort
- Прочтите файл mix.exs.
- Входные данные захватываются подстрокой «эликсир»
- Дубликаты удаляются
- Вводимые данные сортируются и отображаются на экране
Основная идея заключается в том, что команды Unix имеют много общего с Elixir и функциональным программированием. Мы часто используем механизм конвейера в Elixir, и наша функция выглядит как команда Unix, которая перетаскивает данные через цепочку функций, каждая из которых действует как преобразователь или фильтр. Когда я начинаю создавать новую услугу или решать новую бизнес-задачу, я стараюсь разрабатывать функции и программы как отдельные утилиты Unix, следуя приведенным ниже принципам:
- Важно понимать, что вы делаете и зачем.
- Всегда спрашивайте себя, почему было выбрано именно это решение, как оно вписывается в концепцию системы и как его будут использовать другие разработчики.
- Также важна логика организации кода, контекст, имена классов модулей и функций.
- Четко должна быть логическая цепочка, которая как путеводная звезда прокладывает путь к тому, как пользоваться и где найти ту или иную функцию. Если нет четкой логики и принципов в организации кода, систему становится сложно поддерживать и сложно расширять.
- Важно не усложнять систему при проектировании как швейцарский складной нож, иногда простые решения надежнее, понятнее и проще расширять, чем сложную логику.
Теперь давайте попробуем реализовать этот принцип в реальной жизни, чтобы решить реальные проблемы при разработке веб-приложения Elixir.
Параметр шаблона проектирования — Часть 1
В этой главе мы используем этот подход для проверки данных, подготовки и унификации для дальнейших служб.
Железнодорожное программирование — Часть 2
Этот шаблон помогает создать структуру нашей программы в виде спецификации, обрабатывать ошибки, решать вложенные операторы case и упрощать сложную логику с помощью принципа SOLID.
Если вам понравилась первая и вторая часть, пожалуйста, дайте мне положительный отзыв, чтобы вдохновить меня на продолжение написания.
Переключение функций — часть 3 (в процессе)
В этой главе рассматривается принцип, используемый для внедрения новых частей функциональности для конкретных пользователей, функции включения/выключения, A/B-тестирования или тестирования комплексной функциональности в производственной среде.
Протокол — часть 4 (в процессе)
Один из способов создать Фабрику паттернов для Эликсира — использовать Протокол, в этой главе мы увидим, как это сделать.
Ведущий — Часть 5 (в процессе)
Этот шаблон помогает нам подготовить и упростить данные для нашего представления, скрыть операторы if, case и код организации.
Организация GenServer — часть 6 (в процессе)
В этой главе представлены некоторые принципы организации нашего GenServer, какие ошибки мы можем совершить, если не понимаем, как работает GenServer.