Сделаем ваш проект iOS более удобным для чтения и навигации!
Целью этой статьи является не написание кода, который компилируется быстрее, или написание более короткого кода с использованием функций более высокого порядка, а скорее хорошая практика программирования. Так повторяй за мной —
Мы тратим часы и часы на кодирование перед нашим экраном и тратим дни, месяцы или даже больше, чтобы создать продукт, который мы наконец можем показать нашему клиенту. Иногда мы так спешим завершить наш код, что по сути забываем оставлять комментарии. А затем, скажем, после долгого отпуска (для успешного запуска продукта), вы возвращаетесь к работе над своей кодовой базой и просто сидите перед этим экраном, задаваясь вопросом, зачем вообще я написал эту логику.
Признайтесь, если вы не используете комментарии в своем коде, вы, вероятно, сталкивались с такой же ситуацией, как эта.
Но суть этой статьи не в комментариях, а в #pragma mark
. #pragma mark
— это терминология Objective-C, и в языке программирования Swift для нее нет определенного названия. Я назову их прагмами (, поскольку их несколько #pragma mark
).
Давайте напишем код для простого tableView
с некоторыми из его методов делегата и источника данных, чтобы лучше всего продемонстрировать прагмы сценария использования.
И если вы нажмете Без выделения (, возможно, в вашем случае будет показан метод ) на полоса перехода вверху:
Вы увидите это:
Все методы и переменные представлены здесь как коллекция без какого-либо разделения между ними, что, честно говоря, выглядит некрасиво.
Код будет работать нормально, но, честно говоря, без всех комментариев и без разделения на методы источника данных и методы делегата он выглядит немного запутанным. Итак, давайте немного очистим код, добавив комментарии и разделив методы UITableView
’s dataSource и delegate, введя extension
.
Это немного очищает наш код и обеспечивает разделение между источниками данных и методами делегата. ///
поверх нашего объекта tableView на самом деле не является комментарием, а скорее разметкой документации в Xcode, которая немного отличается от комментариев. Я бы не стал объяснять это здесь, так как это только добавит длины статье.
А теперь возвращаясь к сути, мы находимся на полпути. Если мы снова нажмем на эту полосу перехода, мы теперь увидим добавленные к нему расширения к контроллеру представления с разделенными методами, но он по-прежнему не сообщает, что к чему.
Вот здесь и пригодятся наши прагмы.
Прагмы — это, можно сказать, особый тип комментариев, которые начинаются с определенного ключевого слова, а затем позволяют нам определять / записывать то, что мы хотим.
Они всегда начинаются с //
, а не с ///
, поскольку /// обозначает разметку документации, а // обозначает комментарии. За этим //
следует MARK
ключевое слово как есть, все с заглавной буквы, за которым следует :
без пробелов между ними. Итак, ваше последнее ключевое слово будет выглядеть так — // MARK:
. Даже если вы добавите это, вы не получите много на панели перехода, только значок с пустым пространством после него.
Магия заключается в том, что вы пишете после этого. Все, что вы напишете после этого ключевого слова , будет добавлено точно так же в полосу перехода. Но сначала, если вы хотите разделить, скажем, горизонтальной линией между разными прагмами, вам нужно добавить -
. Теперь это будет выглядеть как // MARK: -
. Теперь все, что вы напишете после этого, будет добавлено как таковое внутри панели перехода. Давайте повеселимся, а мы:
Я создал // MARK: — Custom UI Elements
, и тот же текст добавлен в панель перехода. Теперь давайте завершим наш View Controller и заполним его прагмами.
Согласитесь, после нескольких изменений наш код выглядит чище. И, прежде всего, наша полоса прыжков выглядит так —
Вот небольшое сравнение двух подходов —
Помимо MARK
, у нас есть бонус в виде TODO:
и FIXME:
, которые также имеют разные значки на панели перехода и следуют тому же шаблону, что и прагма, которую мы определили выше: // MARK: -
.
Помимо прагм, если мы хотим определить наши настраиваемые предупреждения и ошибки в XCode, мы можем использовать #error(“”)
и #warning(“”)
следующим образом:
Это с моей стороны. Я буду продолжать писать подобные статьи, чтобы держать вас в курсе, ребята ?.
Вы можете связаться со мной в LinkedIn ?? или можете связаться со мной через другие каналы ?