четверг, 21 апреля 2011 г.

Отчет по iOS-party

Итак, прошла первая iOS-минипати посвященная Dependency injection. Перед участниками пати стояла задача написать небольшую программу, внедрить технологию DI и посмотреть, что из этого всего получиться.

В качестве проекта взяли конвертер валют, использующий веб-сервис ЦБ РФ. Весь процесс поделили на 2 итерации. В первой необходимо было создать приложение с заглушкой, результатом работы которой были бы зашитые фейковые данные. Во второй итерации нужно было реализовать получение данных от сервиса. Использование DI предполагалось именно в красивой "подмене" реализаций в противовес суровым "иф-дефам".

Мы разбились на пары и приступили. Каждая команда соперничала с другими, стремилась выполнить задачу круче и быстрее других. Увы, большую часть времени пришлось уделить созданию каркаса приложения, отладке кода, созданию UI и т.д., а не основной теме, поэтому прочувствовать всю силу DI не получилось. Но все же после 3-х часового мозгового штурма парам удалось реализовать рабочие скелеты приложений с инъекциями.

Мы получили неплохие результаты и ответы на следующие вопросы, которые волновали участников:
  1. Нужен ли DI, если есть фабрики?
    Довольно тонкий вопрос, как мне показалось, здесь немного выигрывает DI. Код становиться менее связанным.
  2. Зачем использовать библиотеку Objection, когда в языке Objective-C поддерживается нечто подобное?
    Библиотека предоставляет большую функциональность и избавляет от написания собственного инжектора, хотя никто не гарантирует отсутствие ошибок в самой библиотеки.
  3. Каковы плюсы DI?
    Многократное использование кода, минимальная связанность, высокое абстрагирование, хорошее решение для сборки проектов с различными конфигурациями.
В конце пати обсуждались форматы и темы будущих iOS XP-party, что лучше и каким образом. Отмечались плюсы и минусы проведенной тусовки, чтобы в будущем извлечь максимум пользы и сделать это мероприятие еще интереснее. Также было предложено несколько тем следующей пати, одной из которых - это TDD под iPhone.