Разработка
Как новая функция Xcode 16 помогла избавиться от 66,000 строк кода
Новые buildable папки в Xcode 16 не зависят от pbxproj для распознавания файлов, что помогает командам избежать возможных конфликтов слияния при изменении файлов в ветках git.
При командной работе над большими проектами с использованием git конфликты слияния могут стать самым большим кошмаром и довольно сложной задачей, и моя команда не избежала этой проблемы.
Проблема
Для проектов Xcode ситуация с конфликтами слияния совершенно иная, поскольку IDE полагается на автоматически генерируемые ссылки pbxproj
для распознавания файлов. Больше добавленных файлов означает больше сгенерированных ссылок на файлы, что может сделать разрешение конфликтов сложным. Хотя для их разрешения можно использовать встроенное macOS приложение FileMerge, сделать это все равно непросто, особенно в командах, поскольку все разработчики могут вносить свой вклад в изменение файлов. Одна ошибка в процессе разрешения конфликтов может привести к проблеме компиляции в Xcode, и вам придется начинать процесс заново.
Решение
В Xcode 16 недавно появилась функция buildable папок для организации файлов в проектах. Это помогает IDE избавиться от необходимости использования автоматически генерируемых ссылок на файлы в pbxproj
для распознавания файлов. Теперь этот процесс происходит автоматически, и изменения отражаются в Xcode, когда файлы изменяются через Finder.
Самое приятное, что удаление автогенерируемых ссылок на файлы означает отсутствие конфликтов слияния с большими и сложными файлами при работе в команде.
Стоит отметить, что в старых версиях Xcode вы могли создавать папки, но это было бессмысленно, так как IDE не распознавала файлы внутри.
Вы можете спросить, как мы обычно организовывали файлы в Xcode. Ну, вместо папок у нас были группы, а цвет их иконок был серым, а не синим.
Процесс принятия
После изучения этой новой функции моя команда решила принять ее. Хотя вы можете щелкнуть на группе правой кнопкой мыши и выбрать «Преобразовать в папку», это требует дополнительной работы, если есть элементы без ссылок или с несколькими ссылками. В таких случаях можно выбрать «Показать подробности», чтобы увидеть причину неудачи во всплывающем окне.
В целом, процесс работы над нашим проектом не был сложным, но занял много времени.
Результат
Это внедрение помогло нашему проекту найти и удалить более 100 неиспользуемых файлов Swift, которые содержали около 4,000 строк кода. Что касается файлов pbxproj
, то мы не смогли полностью избавиться от них, поскольку некоторые файлы все еще требовались в определенных группах в виде ссылок. Однако нам удалось сократить большинство ссылок и удалить 62,000 строк, что впечатляет.
Несмотря на уменьшение размера файлов pbxproj
, заметного уменьшения размера двоичных файлов целевых приложений проекта не произошло.
Заключение
Новые buildable папки в Xcode 16 не зависят от pbxproj
для распознавания файлов, что помогает командам избежать возможных конфликтов слияния при изменении файлов в ветках git. Эта функция позволила моей команде найти более 100 неиспользуемых файлов Swift и удалить в общей сложности 66,000 строк кода. Все, что потребовалось, — это потратить несколько часов на удаление элементов без ссылок и с несколькими ссылками. Это также повышает эффективность работы команды с изменениями файлов и папок.
-
Новости4 недели назад
Видео и подкасты о мобильной разработке 2024.51
-
Новости3 недели назад
Видео и подкасты о мобильной разработке 2024.52
-
Видео и подкасты для разработчиков4 недели назад
Как ВКонтакте измеряет перфоманс приложений
-
Видео и подкасты для разработчиков4 недели назад
Compose и SwiftUI: найди 10 отличий