Я начну с того, что Apple говорит о Swift.

«Swift - это новый язык программирования для приложений iOS, macOS, watchOS и tvOS, основанный на лучшем из C и Objective-C, без ограничений совместимости с C.»

Элегантность Swift заставляла почти каждого разработчика опробовать его хотя бы в одном из своих приложений. И, учитывая его преимущества, он уже стал предпочтительным выбором для разработчиков. Поэтому, как команда, мы приняли смелое решение полностью перейти на Swift. Смелая, потому что задача миграции имеет ряд проблем (некоторые из них были нам тогда неизвестны). Известны были следующие:

  • Каждый член команды был новичком в этом языке.
  • Переносимая кодовая база содержит более 100 000 LOC.
  • Для очень стабильного живого кода приложения необходимо выполнить миграцию на совершенно новый язык, что требует больших усилий и пропускной способности со стороны команды разработчиков, что снижает скорость конвейера продукта.

Мы решили принять этот вызов и перевели почти полный код на Swift. Почему «почти»? Вы узнаете, когда будете читать дальше.

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

  • По производительности быстрый язык лучше, чем лучший язык до сих пор, то есть C ++, вот и отчет.
  • Типобезопасный характер языка обеспечивает проверки во время сборки, что приводит к меньшему количеству ошибок времени выполнения. Это своего рода контроль качества и помогает избежать нежелательных ошибок.
  • Язык Swift очень компактен, что снижает LOC и, следовательно, увеличивает читаемость кода.

Основные выводы после перехода на Swift:

  • Взаимодействие между objective-c и swift ограничено, что приводит к меньшему использованию реальной мощности swift и отставанию для повторного посещения кода swift, связанного с objective-C. Пример: вы можете быстро унаследовать класс objective-c, но не наоборот. В Objective-C можно использовать только перечисления Int, написанные на быстром языке.
  • Динамические фреймворки / модули могут быть созданы с помощью Swift, и это лучший подход в переходный период; позволяя вам писать независимый, сегрегированный и тестируемый код. Изучение примера кода веб-разработки Китуры очень помогает понять мощь быстрых модулей и способы управления ими.
  • Версия языка Swift меняется очень часто, а инструмент миграции, поставляемый с Xcode, не работает должным образом, что часто приводит к накладным расходам на разработку, однако это неизбежно, поскольку Swift - новый язык. [Это была основная проблема, с которой мы столкнулись при переносе кода с Swift 2.0 на 3.0 в ходе разработки]
  • Все сторонние библиотеки пока не поддерживают Swift, поэтому полностью избавиться от цели-C пока невозможно. [Ответ на вопрос, почему «почти»]
  • Знание существующего кода очень важно для принятия нового ключевого решения, когда нужно писать код на Objective-C / код, связанный с Swift, с динамическим каркасом Objective-C / Swift / модулем swift.
  • Опция рефакторинга Xcode пока недоступна для Swift.
  • Компиляция быстрого кода занимает много времени. Даже Mac с 8 ГБ ОЗУ был медленным.

Это были основные выводы, которые мы получили в процессе миграции нашего кода. По любым вопросам и деталям / информации вы можете написать письмо по адресу - [email protected]