Генерация кода в Swift
Работая над проектом iOS, вы довольно часто пишете шаблонный код. Это код, который вы предпочитаете не писать от руки и чаще всего - копировать и вставлять. Это может привести к определенным ошибкам и даже сбоям во время выполнения. В этой ситуации может быть полезна генерация кода. Это позволяет генерировать скучный и повторяющийся код и делать приложение более надежным.
В этом посте давайте рассмотрим сценарии использования, когда генерация кода имеет смысл, и рассмотрим инструменты, которые мы можем использовать для его автоматизации.
Сценарии использования генерации кода
Генерация кода не является новой техникой и используется уже во многих проектах Android, Golang и т. д. Возможно, вы уже используете Sourcery в своем проекте, это популярный инструмент для генерации кода и метапрограммирования в Swift.
Прежде всего, давайте определим наиболее распространенные сценарии использования для генерации кода:
С их помощью вы можете автоматизировать написание и обслуживание имитационных реализаций, которые вы сделали вручную.
Dependency Injection
Dependency Injection является одним из фундаментальных паттернов разработки программного обеспечения. Он представляет технику инверсии управления для предоставления зависимостей классу через конструктор, общедоступное свойство или функцию установки.
Модели DTO
Довольно часто при интеграции с RESTful API вам приходится определять множество объектов передачи данных. Понятно, что этот подход неэффективен и может привести к ошибкам в вашем коде.
Другое
Инженеры Apple также используют генерацию кода. Сопровождающие Swift создали инструмент шаблонирования на основе python под названием GYB, который является аббревиатурой от «Generate Your Boilerplate». Это может быть полезно, когда у вас есть абстракции с общей структурой. Вместо того, чтобы поддерживать несколько версий аналогичного кода, вы можете определить один шаблон и сгенерировать остальные классы/структуры/преемы.
Вы можете проверить файл шаблона Codable.swift.gyb, чтобы получить представление о шаблонах GYB. Также есть хорошая статья о GYB и о том, как принять его в вашем проекте, размещенная в NSHipster.
Заключение
Генерация кода - это эффективный способ повысить вашу производительность и сделать ваше приложение более надежным. Возможно, вы знакомы с генерацией кода в iOS и уже пробовали Sourcery или Swiftgen. В противном случае я бы посоветовал начать с аксессоров ресурсов или генерации кода тестовых макетов. Таким образом, вы можете избавиться от необходимости поддерживать шаблонный код вручную и сосредоточиться на других важных вещах.