Эффективная DI библиотека на Swift в 200 строк кода

Библиотека EasyDi содержит контейнер зависимостей для Swift. Синтаксис этой библиотеки был специально разработан для быстрого освоения и эффективного использования. Она умещается в 200 строк, при этом умеет все, что нужно взрослой Di библиотеке:

— Создание объектов и внедрение зависимостей в существующие
— Разделение на контейнеры — Assemblies
— Типы разрешения зависимостей: граф объектов, синглетон, прототип
— Разрешение циклических зависимостей
— Подмена объектов и конктесты зависимостей для тестов

В EasyDi нет разделения на register/resolve. Вместо этого зависимости описываются вот так:

var apiClient: IAPIClient {
  return define(init: APIClient()) {
    $0.baseURl = self.baseURL
  }
}

Cocoapods / EasyDi
Github / EasyDi

Под катом очень краткое описание «Зачем DI и что это», также примеры использования библиотеки:

  • Как использовать и типы зависимостей
  • Как тестировать c подменой объектов
  • Как можно это использовать для A/B тестов
  • Как собрать VIPER-модуль

Читать дальше →

Таблицы! Таблицы? Таблицы…

В статье я покажу стандартную табличную разметку, какие у неё есть альтернативы. Дам пример собственной таблицы и разметки, а также опишу общие моменты её реализации.

Читать дальше →

Командная разработка системы на базе MS Dynamics CRM

Сегодня мы расскажем о том, как в компании построили командную разработку на платформе MS Dynamics CRM. Эта платформа, как большинство проприетарных систем без исходного кода, несет в себе ряд ограничений и дополнительных сложностей для разработчиков. Настройка системы, создание внутренних сущностей, создание UI – все это реализовано внутренними средствами платформы, при этом внутреннего языка нет, возможности по переносу настроек ограничены выгрузкой во внутреннем, недокументированном формате.
Читать дальше →