Чуть позже (осенью этого года) Swift 3 выйдет из беты. Он привносит существенные изменения. В этой статье вы сможете прочитать о наиболее существенных изменениях в языке, которые повлияют на ваш код. Вы так же можете ознакомится с нашей шпаргалкой по Swift 2.

Начинаем

Предварительная версия Swift 3 доступна в Xcode 8 beta, который вышел пару дней назад. На этом можно было бы ставить точку в развитии Swift 3, однако в ближайшие несколько месяцев язык вполне может претерпеть еще несколько существенных изменений. Окончательно язык можно будет назвать завершенным только после выхода Xcode 8 GM (осенью). Вам придется еще какое то время посидеть на Swift 2, если вы планируете ближайшее время выпускать приложения.

Для того что бы максимально упростить переход на Swift 3, Apple выпустила Swift 2.3. Эта версия такая же как и 2.2, но с поддержкой многих новых SDK. После выхода Xcode 8 из беты вы будете иметь возможность писать как на Swift 2.3, так и на Swift 3.

Рекомендую испытать особенности, которые мы обсудим, в Playground.

Мигрируем на Swift 3

При преобразовании своего кода в Swift 3, вы вероятно заметите, что каждый файл нуждается в правках. Это в значительной степени от того, что все имена в Cocoa изменились. Если быть точнее, то Cocoa остался тем же, но разные его API для Objective-C и для Swift называются теперь по разному. Это свидетельствует о том, что эпл решила сделать Swift независимым в ближайшие годы.

Apple включила ассистент миграции в Xcode, который позволит перевести одним махом большинство изменений с одной версии языка на другую. Вы можете конвертировать как в версию 2,3 так и 3. Если вам когда нибудь понадобится вернуть старый синтаксис, вы легко сможете сделать это с помощью Edit > Convert > To Current Swift Syntax… Если вы случайно используете старое название API, то компилятор подскажет вам заменить его.

А теперь приготовьтесь к лучшей новости. Swift 3 близится к тому, что бы стать финальной и статичной версией Swift. Это значит, что в будущем вам не придется переписывать код от версии к версии. Проще говоря — за 2 года язык впервые близок к тому что бы «устаканиться». Разработчики говорят, что не могут обещать полной статичности, но они сделают все для того что бы растянуть цикл устаревания языка. Это значит, что язык достиг стабильности, которая сподвигнет (теперь уж точно) всех на него перейти.

Тем не менее бинарной стабильности на данный момент достигнуто не было.

Реализованы предложения Swift Evolution

Swift Evolution — источник на github, посвященный эволюции языка. Члены сообщества представили более 100 предложений для языка, поскольку его код открыт и доступен всем. После обсуждений и модификаций, большая часть из них была принята (на данный момент 70). Сотрудничество между командой языка и сообществом было впечатляющим. Каждую неделю поступает несколько новых предложений.

Изменения в API

Swift 3 включает в себя стандартную библиотеку, описывающую соглашение об именах для некоторых других библиотек. В API Design Guidlines содержатся правила, которыми команда Swift охарактеризовала принципы построения языка.

Давайте же наконец то перейдем к изменениям, которые повлияют на ваш код!

Первый параметр

Первый параметр в функциях и методах теперь всегда имеет «метку». Раньше метка в первом параметре опускалась.

Обратите внимание, как использованы предлоги «of», «to», «with», «in» при определении метода. Это повышает читаемость кода.

Если вызов метода хорошо читается без предлогов и вам не нужна метка, то вы должны явно исключить имя первого параметра с помощью подчеркивания.

Опускаем ненужные слова

Команда придумала, как отфильтровать все ненужные «шумы» и оставить только полезный код.

Улучшеный GCD и Core Graphics

Grand Central Dispatch решает множество задач параллелизма, таких как долгие вычисления или обмен информацией с сервером. Перемещение активности в другой поток предотвращает блокировку пользовательского интерфейса. Библиотека libdispatch была написана на C и всегда использовалась ранее. Теперь же есть родное Swift-решение:

Та же судьба коснулась и написанного ранее на C Core Graphics:

Методы, которые возвращают или модифицируют

Теперь появилось одно маленькое правило в наименовании методов. Оно заключается в том, что теперь к имени метода следует добавлять суффикс (например ing или ed). Думайте о методе как о существительном. Метод-существительное возвращает значение. Если метод не имеет суффикса, значит он императив глагола. Методы-глаголы выполняют действия со ссылками памяти. Это также называется модификацией на месте. Есть несколько пар методов, которые уже придерживаются этих принципов:

Вот отрывок кода в действии:

Типы функций

Объявление и вызов функций всегда требуют круглых скобок вокруг их параметров:

Раньше было достаточно трудно понять, где заканчиваются параметры и начинаются возвращаемые значения. Теперь же все параметры окружены круглыми скобками, что улучшает читаемость функции:

Итог

На самом деле, есть еще много не упомянутых мелочей и деталей, которые мы детально и последовательно раскроем в будущих статьях и в шпаргалке Swift. Так что следите за обновлениями!

Команде Swift еще несколько месяцев предстоит полировать свою третью версию языка программирования, но уже и сейчас стоит отметить, что язык вплотную приблизился к той своей версии, на которой на нем захотят писать код все.

Детально посмотреть на все нововведения языка вы можете здесь. 

Опубликовал Игорь Малеваный

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *