Как перестать изобретать велосипед или зачем мы создаем фреймворки

# Просто о разработке, О процессах
Апрель 2017 г
SimbirSoftMobile

Лень – двигатель прогресса

Билл Гейтс как-то пошутил, что предпочитает нанимать ленивых программистов, потому что они найдут самое короткое решение. В каждой шутке есть доля правды. Программисты должны иногда быть ленивыми для того, чтобы искать оптимальное решение. Когда разработчику приходится делать одну задачу несколько раз, возникает дискомфорт и желание как-то ее автоматизировать. Внутри IT-компаний появляются собственные наработки для минимизации рутинных задач. Она дают программисту возможность больше заниматься непосредственной бизнес-логикой приложения.

Почему лень – это хорошо

Готовые наработки позволяют не изобретать велосипед каждый раз при разработке, а пользоваться уже проверенными решениями. Например, для платформы Android существует вечная проблема обработки состояния поворота. При повороте экрана разработчик сам заботится о сохранении и восстановлении данных и о том, как опять показать их на перевернутом устройстве. Прописывать эту логику в каждом приложении затратно, поэтому мы создали решение, которое можно использовать снова и снова.

Лучше день потерять, потом за пять минут долететь

За 8 лет разработки мобильных приложений мы создали собственные «каркасы» для разработки. Это шаблоны, позволяющие разрабатывать быстрее и качественнее. По-умному «фреймворки». К примеру, 80% приложений загружают изображения по сети. Логика часто одна и та же, и писать ее заново каждый раз бессмысленно. Так же дела обстоят с проверкой валидности e-mail или набором номера при нажатии на номер телефона. Готовые решения позволяют решать типовые задачи парой строк кода. Наши фреймворки задают архитектуру приложения и решают другие часто встречающиеся задачи.

Чистота – залог здоровья, порядок прежде всего

В наших командах выработан общий стиль оформления и организации кода. Это может показаться неважным, но это не так. Известно, что программисты тратят больше времени на чтение кода, чем на его написание. Это особенно актуально, когда дорабатываешь чужое приложение. Нужно, чтобы код легко читался и не вызывал удивления и возмущения других разработчиков. Договоренности о разделении кода на модули, об именовании методов и классов, использовании тех или иных техник позволяют этого добиться. Испытываешь особое чувство удовлетворения, когда находишь нужный кусок кода в том месте, котором ожидаешь. А заказчик не беспокоится о том, что один разработчик не разберет код другого.

За кулисами приложения

Практически все мобильные приложения передают по сети данные: новости в ленте, картинки с котиками или просто статистику для улучшения игры или программы. Для всего этого нужно обеспечить приложения сервером - той невидимой частью, про которую мы забываем, когда берем в руки смартфон. Часто приложения представляют собой «тонкого клиента»: отображают то, что приходит с сервера. И вновь возникают типовые задачи, для которых неплохо бы сделать универсальные решения и не открывать Америку. Мы проанализировали рынок решений по разработке сервера. Идеального решения не нашлось, поэтому создали своё. Оно позволяет создавать серверную часть под веб-сайты и мобильные приложения в среднем на 20-40% быстрее, чем с нуля. Со стороны мобильного приложения есть готовая логика загрузки данных, авторизации пользователя, в том числе авторизация через соцсети. Это сокращает время на разработку и уменьшает количество ошибок.

Чтобы оставаться на месте, нужно быстро бежать

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