Жду отклика:) и детализации идеи в процессе обсуждения.
паттерны 2.0 (решение типовых задач программиста)
Жду отклика:) и детализации идеи в процессе обсуждения.
В этот раз я бы хотел немного поговорить о еще одном порождающем шаблоне проектирования из арсенала «Банды четырех» – «Строителе» («Builder»). Так вышло, что в ходе получения своего (пусть и не слишком обширного) опыта, я довольно часто видел, чтобы паттерн использовался в «Java»-коде вообще и в «Android»-приложениях в частности. В «iOS» же проектах, будь они написаны на «Swift» или «Objective-C», шаблон встречался мне довольно редко. Тем не менее, при всей своей простоте, в подходящих случаях он может оказаться довольно удобным и, как модно говорить, мощным.
Меня зовут Саша Терентьев, я из команды ленты ВКонтакте. В этой статье поделюсь мыслями о проблемах кода, где используются enum
и сопоставления типов. Часто встречаю такой код в проектах, ресурсах, примерах. Мы обсуждали это с коллегами на внутреннем событии, и из моего доклада выросла эта статья.
Букв будет много. Но, думаю, материал пригодится широкому кругу разработчиков — и не только iOS. Примеры основаны на псевдо-Swift и написаны по мотивам использования UIKit. Но могут пригодиться для работы с разными платформами и в любой области, где возникают сопоставления с образцом, приведения типов, переборы множеств типов.
Мы продолжаем знакомить читателей нашего блога с интересными международными публикациями. Ранее мы перевели материал с практическими советами по обучению для ИТ-специалистов, сегодня же коснемся темы абстракций – популярного и эффективного средства разработки.
Под катом тех– и тимлид Йонас Тулструп, один из разработчиков датского сервиса MobilePay, демонстрирует, что отказ от излишних абстракций позволяет писать более чистый код. А именно: существенно уменьшать его сложность, повышать читабельность и удобство поддержки. Обсуждаемые подходы основаны на широко известных принципах KISS («Делай проще») и YAGNI («Вам это не понадобится»), и применимы к большинству видов разработки ПО.
Обращаем ваше внимание, что позиция автора не всегда может совпадать с мнением МойОфис.
Что из себя представляет тестирование и анализ алгоритмов? Давайте разберемся в этом на практике.
На тему паттернов проектирования написаны тонны статей и издано множество книг. Однако эта тема не перестает быть актуальной, поскольку паттерны позволяют пользоваться нам уже готовыми, проверенными временем решениями, что позволяет сокращать время разработки проектов за счет улучшения качества кода и уменьшения технических долгов.
С момента появления паттернов проектирования появляются все новые примеры их эффективного использования. И это замечательно. Однако, здесь не обошлось и без ложки дегтя: каждый язык имеет свою специфику. А уж golang — и подавно (в нем нет даже классической модели ООП). Поэтому и возникают вариации шаблонов, применительно к отдельно взятым языкам программирования. В этой статье хотелось бы затронуть тему паттернов проектироавния применительно к golang.
Реализация и преимущества данного шаблона уже были описаны в нескольких статьях, но т.к. у меня в проекте уже была своя реализация, которая, на мой взгляд, удобнее и позволяет убрать кучу повторяющегося кода, то я решил поделиться своим вариантом (который, возможно, не совсем чистая Спецификация).
Исходники традиционно на https://github.com/xumix/XSpecification, пакеты на Nuget.
Теперь к деталям: данная либа будет полезна, в первую очередь, для тех, кого есть большое количество бизнес-логики при фильтрации или множество параметров фильтрации. Как пример бэкенд для грида типа такого https://reactdatagrid.io/demo или фильтра типа такого https://i.imgur.com/Jw5UAFz.png.
Эта статья повествует об эволюции структур данных, которые мы использовали при выполнении запросов в исторической части базы данных временных рядов Agoda, и демонстрирует примеры реализации нескольких дисковых индексных баз данных.
В последние годы растет популярность фреймворка для кроссплатформенной разработки приложений Flutter, а вместе с ним вторую жизнь получил и язык программирования Dart. Dart создавался как потенциальная замена JavaScript и мог бы занять нишу, которая сейчас принадлежит TypeScript, но по ряду причин он так и оставался длительное время "одним из проектов Google", который не был оценен ни для использования в web (после транспиляции в JavaScript), ни для создания серверных или десктопных приложений.
При этом компилятор Dart создает оптимизированный высокопроизводительный код для основных операционных систем и может также использоваться для компиляции в другие аппаратные архитектуры (например, для микроконтроллеров) и, в целом, Dart может использоваться как язык общего назначения для создания серверных приложений (Shelf, Aqueduct), устройств умного дома (с целевой платформой ARM и пакетом dart_periphery) и, конечно, десктопных, мобильных и веб-приложений (Flutter).
И все же язык обладает определенным набором особенностей, которые надо учитывать при реализации кода и использованию типовых паттернов проектирования. В этой статье мы рассмотрим примеры реализации самых часто используемых основных и порождающих шаблонов на языке Dart (будем использовать возможности наиболее актуальной версии Dart 2.17), а во второй части статьи будут рассмотрены более сложные структурные и поведенческие паттерны.