Создавайте шаблоны для создания нескольких файлов с одинаковым базовым именем

В течение некоторого времени, работая над проектами iOS, я думал о том, чтобы сделать всю кодовую базу единообразной и сократить усилия по разработке. Но всегда нелегко обеспечить, чтобы все писали качественный и последовательный код.

Представьте, что вы разрабатываете проект и предполагаете, что он содержит множество классов экрана. Вы неоднократно создаете каждый класс, записывая код, методы и функции, которые должны быть для каждого класса экрана - довольно трудоемкая работа, но также довольно неприятная, если у вас жесткие дедлайны, верно?

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

Хорошая новость заключается в том, что Xcode предоставляет все эти функции. Если я хочу создать класс экрана с любой архитектурой дизайна, все подструктуры, связанные с этим классом экрана, создаются автоматически. Например, когда я создаю экран входа в систему с использованием архитектуры MVVM, автоматически создаются методы привязки, модели представления, модели, представления и протоколы.

Звучит потрясающе, правда? 🤩

Давайте начнем

Примечание. В этой статье я создам шаблон, связанный с ViewModel, только в демонстрационных целях. Вы можете самостоятельно создавать другие шаблоны файлов. Кроме того, я прикрепил ссылку на GitHub для шаблона MVVM-R.

Давайте напишем код шаблона

Начнем с создания нового файла Swift.

Во-вторых, мы начнем с написания общего кода шаблона. Вот как выглядит моя ViewModel до кода шаблона.

Разве это не удивительно, если вы получите весь этот код заранее? Черт возьми!

Итак, в настоящее время эта ViewModel содержит определенные имена модулей, например LoginViewModel.

Итак, теперь мы изменим нашу ViewModel и заменим Login на какой-то общий шаблон кода. Мы можем добавить его где угодно, и название изменится как по волшебству.

Здесь вступает в действие Xcode. Xcode предоставляет нам некоторые ключевые слова, которые мы будем использовать сегодня для достижения нашей цели. А это:

  • ___FILEBASENAMEASIDENTIFIER___: Мы будем использовать это ключевое слово, если хотим, чтобы наш идентификатор совпадал с именем файла - например, если имя нашего файла LoginViewModel и мы хотим, чтобы наш класс внутри этого файла имел такое же имя. Более того, мы также можем добавить к нему любую другую строку - например, если мы хотим иметь протокол LoginViewModelProtocol внутри файлаLoginViewModel, мы просто будем использовать ___FILEBASENAMEASIDENTIFIER___Protocol .
  • ___VARIABLE_productName:identifier___: Это ключевое слово можно использовать, когда мы хотим получить название продукта. При создании модуля мы должны указать префикс для этого модуля. Этот префикс действует как название продукта.
    Предположим, мы создаем модуль для Login, и хотим создать переменную с именем LoginOutput внутри LoginViewModel. Мы просто использовали бы ключевое слово вместе с суффиксом, например ___VARIABLE_productName:identifier___Output.
  • ___FILEBASENAME___: это последнее ключевое слово, которое я буду использовать сегодня в этой статье. Как видно из названия, оно используется для указания имени файла. Поэтому мы всегда хотим, чтобы в нашем шаблоне указывались имена файлов на основе имени модуля. Как и при создании модуля, мы должны указать префикс для этого модуля. Считайте, что мы выбрали Login . Теперь мы укажем имя нашего файла шаблона как ___FILEBASENAME___ViewModel.swift , чтобы все, что пользователь вводит в модуль с именем filename, настраивалось автоматически.

На основе всех этих ключевых слов я обновил свою ViewModel, чтобы она работала как шаблон. И вот она:

Теперь создайте все шаблоны компонентов, как описано выше, в зависимости от требуемой архитектуры.

Примечание. Не беспокойтесь обо всех этих файлах - я добавил ссылку на репозиторий Git ниже.

Прикрепим наш шаблон

Теперь, после создания всех этих файлов template. Давайте перейдем к добавлению их в XCode. Мы увидим результаты при создании нового модуля. Сначала перейдите в каталог шаблона XCode (по указанному ниже пути):

Примечание. Обновите свой путь на основе имени и пути вашего приложения XCode.

/Applications/Xcode.app/Contents/Developer/Library/Xcode/Templates

Как только вы окажетесь внутри каталога, у вас уже будут созданы две папки:

  • Шаблоны файлов
  • Шаблоны проектов

В окне «Добавить новый файл» создайте в этом каталоге еще одну папку с суффиксом .xctemplate и именем, которое вы хотите отобразить. Поскольку я хочу показать свое имя модуля как модуль MVVM, я создал папку с именем MVVM Module.xctemplate.

В эту папку вы добавите файлы трех разных типов:

  • Шаблоны. Для добавления шаблонов сначала создайте папку с именем MVVM Template и вставьте в нее все шаблоны, которые вы создали для своего модуля.
  • Значок: теперь мы добавим значки для нашего модуля, которые будут отображаться в окне «Добавить файл». Вы загрузите значки в масштабе 1x и 2x с предварительно заданными именами TemplateIcon.png и [email protected].
  • Описание PLIST. Наконец, мы создадим файл PLIST для описания с именем TemplateInfo.plist. Вы добавите несколько ключей в свой PLIST, как показано ниже:

Значение Kind определяет, будет ли это шаблоном файла. Платформа, как известно, - iOS. А массив параметров дает подробную информацию о модуле.

Если вы выполнили все шаги по порядку, ваш новый модуль готов.

Результаты, достижения

Когда вы закончите создавать все свои файлы, ваша структура папок будет выглядеть примерно так.

А после перезапуска XCode вы сможете увидеть параметр для создания модуля MVVM в окне «Добавить файл», как показано ниже:

Наконец, поскольку я использую MVVM-R со строителем, моя структура выглядит примерно так:



Спасибо за прочтение!