Блог :. Избавляемся от текстовых id для ячеек и вьюконтроллеров

Избавляемся от текстовых id для ячеек и вьюконтроллеров

18 Окт, 2018

Недавно затащил в проект SwiftLint, чтобы код как можно ближе соответствовал Swift Style Guide, ну чтобы в общем был по всем канонам. Куча ворнингов, и довольно часто встречается вот такой:

Line Length Violation: Line should be 120 characters or less: currently 139 characters (line_length)

Вылазит для куска кода, где в wireframe инстанциируется View-слой для VIPER-модуля. Аналогично и для получения ячейки по идентификатору из UICollectionView / UITableView

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


Глядя на код выше, мы-таки можем что-то сделать, чтобы не писать 2 раза 2 раза MyViperModuleViewController. Как минимум идея заключается в том, чтобы давать названия для вьюконтроллеров в самих сторибоардах ровно так, как они и называются

Для начала научимся получать текстовый идентификатор из имени нужного класса:

Ну и сделать укороченные версии методов для UIStoryboard, UICollectionView и UITableView:

Получаем более читаемый код, в котором опущены id вьюконтроллеров и ячеек:

??????

PROFIT