Как стать автором
Обновить

Новичок о переходе с iOS на Android

Время на прочтение2 мин
Количество просмотров5.8K
Перевод этого поста в гуглоплюсе.

Купил себе Nexus S. Программировал под Андроид несколько последних дней. Android API требует, чтобы пользователи являлись очень хорошими программистами. Абстракции Андроида намного более наворочены (раздуты, навязаны, переусложнены), чем их эквиваленты в iOS. Между тем, “intents” просто замечательны, но только если въехать в них.

Простите, все что дальше — поток сознания. tl;dr



После пары дней программирования iOS у меня было работающее приложение. После пары дней Андроида я только-только начал понимать абстракции.

Похоже, разработчики Андроида хотели дать потребителю API (разработчикам приложений) свободу делать всё, что захочешь. Между тем, глубина знаний паттернов проектирования требуется так сильно и так бессмысленно, что большинство разработчиков приложений изучат только 50% необходимых для выполнения задачи вещей, и закончат простреливанием ноги, внезапно разрушив юзабилити в оставшихся 50%. iOS позволяет навести пушку на ногу, но и дает возможность никогда не нажимать курок.

Например, чтобы корректно реализовать асинхронный HTTP, на iOS и Android нужно пройти абсолютно разные испытания. На iOS можно использовать встроенные библиотеки, и если пользователь вдруг переключается между приложениями в момент запроса, можно быть уверенным, что имеешь до 30 секунд, обычно больше, чтобы закончить свои задачи до завершения приложения. На андроиде же нужно реализовать android app service, апи для всех важных сетевых вызовов. Приложение может быть убито в любое время, поэтому ты должен хранить все свои аргументы, и попробовать снова сделать вызов в случае, если оно действительно умрет.

Это называется «хорошей практикой» и, как утверждается, подходит для 99% случаев (хотя и с большим количеством ненужного кода и работы с твоей стороны). Решения в области дизайна становятся очевидными, как только понимаешь, что ограничения аппаратуры и провайдеров являются неотъемлемой частью андроида, между тем разработчикам приложений это доставляет мало радости. iOS поддерживает методы, которые также подходят к 95% случаев, но при этом требуют намного меньше усилий со стороны разработчика для создания правильно работающего приложения.

Разработчики iOS имеют доступ к отличной документации. В тех местах, где библиотека документации iOS/Cocoa/Core* обычно очень хороша, ведя разработчика в верном направлении, в сторону более простых абстракций, документация Андроида делает несколько предположений, она предполагает отличное знание паттернов разработки Java, и это в дополнение к собственным андроидовым паттернам. Например, вот: «android.content.ContentProvider» или «android.app.Service».

В разработке под Андроид есть огромный потенциал, и есть несколько действительно хороших приложений. Только я чувствую, что они не в этой области. Необходимо больше абстракций, чтобы мы (разработчики мобильных приложений) могли быстрее разбираться в вопросе, с 95% точностью. В данный момент, мы имеем API, позволяющее сделать идеальное приложение, но только если мы хотим инвестировать месяцы в исследование (анти?)паттернов проектирования под Андроид для того, чтобы наш первый REST-запрос отработал корректно. А еще можно быть специалистом в Computer Science — но ведь на самом деле не все мы пошли по этому пути. По факту, немногие из нас (обратите внимание на почти все отличные приложения под iOS).
Теги:
Хабы:
Всего голосов 104: ↑73 и ↓31+42
Комментарии68

Публикации

Истории

Работа

Ближайшие события

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
14 сентября
Конференция Practical ML Conf
МоскваОнлайн
19 сентября
CDI Conf 2024
Москва
20 – 22 сентября
BCI Hack Moscow
Москва
24 сентября
Конференция Fin.Bot 2024
МоскваОнлайн
25 сентября
Конференция Yandex Scale 2024
МоскваОнлайн
28 – 29 сентября
Конференция E-CODE
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн