SNAPKIT
SnapKit — легковесный DSL (предметно-ориентированный язык), который упрощает работу с Auto Layout и ограничениями. Это инструмент для frontend разработчиков, значительно облегчающий создание макета страниц вашего Swift-приложения для iOS или MacOS.
Сам по себе Auto Layout — крутой и мощный инструмент для описания взаимосвязей между представлениями и их иерархиями, но при этом довольно сложный и не интуитивный. Не смотря на то, что начиная с iOS 9, привязки макета постоянно совершенствуются, SnapKit все еще остается must-have инструментом для тех кому важна скорость и удобство.
SnapKit делает код максимально похожим на обычный английский текст. Его приятнее читать и проще в нем разобраться, в том числе и потому, что новый синтаксис избавляет разработчиков от необходимости прописывать сложные конструкции, сокращая их декларативно.
Лучшая часть SnapKit — возможность свободно составлять цепочки, комбинируя элементы макета. Компоновка привязок и ограничений получается простой и выразительной, а количество кода будет меньше. Со SnapKit становится гораздо проще настраивать изменение отображения при повороте экрана в альбомную ориентацию, и в целом менять представление так, как вам хочется. При этом, если разработчик захочет изменить какую-либо из цепочек, ему не нужно будет переделывать все — две команды, и старый вариант автоматически заменяется на новый.
Проверка кода на наличие конфликтов в SnapKit тоже реализована гораздо проще, чем в базовом Auto Layout. В выводе отладки появятся информативные указатели на возможные проблемы и разработчикам нужно будет на порядок меньше времени чтобы найти несоответствия и исправить их.
SnapKit — DSL, язык, задача которого решать конкретные проблемы в строго определенном месте. Она нужна, чтобы упростить синтаксис Auto Layout, отвечающего за описание зависимостей и ограничений представлений вашего приложения. Все, что можно сделать со SnapKit, можно сделать и без него, стандартными инструментами. Лучшей практикой считается комбинирование классических решений с возможностями SnapKit. И именно так делают наши Swift-разработчики во всех своих проектах.