Как бороться с длинными viewDidLoad()

Не секрет, что viewDidLoad могут быть достаточно большими при разработке для iOS. В него приходится засовывать очень многое, но что самое неприятное очень разностороннее. Там и настройки таблицы, и navigationController, и searchController и стартовая логика. Короче, чтение этого метода через пару месяцев после разработки очень увлекательное занятие из разряда «интересно, зачем оно здесь» и «интересно почему A поставили именно после Б».

Но наш любимый язык Swift дает нам возможность упростить этот метод, причем без всяких хитростей. Мы же используем в наших классах didSet и так называемые initalization closures. Так вот мы будем использовать все тоже самое на UIViewController. А идею мне эту подкинула просто шикарная статья — Kill Your Giant viewDidLoad

Автор в мельчайших деталях разбирает варианты для тех, кто использует Storyboard и кто их не использует. А также рассматривает в конце статьи самые частые ошибки и способы их решения, которые очень меня выручили.

Конечно же я сразу засел за рефакторинг проекта на Swift, который пишу уже почти год, и 5 месяцев из которых он уже в продакшене. У меня в контроллере были выходы (IBOutlet) на таблицу, на констрейн для AutoLayout, на две дополнительные UIView, еще UISearchController и UISearchBar и все это я инициализировал во viewDidLoad различными параметрами. После того, как все это я разнес по didSet или по initalization closures все стало яснее и понятнее самому. Причем идея-то лежит на поверхности, но не понятно, почему раньше не приходило в голову так это писать. Очень рекомендую к прочтению. Ну и добавлю картинку для красоты — один из примеров использования.

Снимок экрана 2016-03-29 в 16.43.27

Реклама

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s