Еще добавил бы папку Network для реквестов и класса для работы с сетью. Аналогично папка Database. Также удобна отдельная папка для категорий. Базовые классы модели храню в папке Models, для вьюконтроллеров — в папке для для вьюконтроллера. Локализационные файлы храню в папке Resources.
Классы для работы с сетью у меня лежат в API, планирую написать статью об обертке для AFNetworking. Про Database и локализацию согласен, обновлю статью.
Группировать файлы лучше по назначению. Например, есть часть проекта, которая отвечает за события. Ее и нужно группировать. Когда происходит работа над функциональностью, то так удобно держать все части рядом. Если фича большая, то можно увеличить вложенность. Например, события отображаются в таблице, типов ячеек в таблице — 7 и их можно сгруппировать в свой каталог. Для каждого события можно посмотреть детали — своя группа. А если фича совсем вырастет, то ее можно просто выделить в отдельный подпроект и определить точки входа, не раскрывая в публичных интерфейсах все.
А вот я бы рекомендовал убрать все пробелы из имен папок. Потому что в тот день, когда вы захотите добавить какой-нибудь скрипт — вы будете очень сожалеть о том что столько много директорий имеют пробелы. В принципе, все сработает и с пробелами, но не раз наткнетесь на то что bash разделит имя файла на 2 пути.
Спасибо :) Тут действительно нет единственного верного решения. Главное чтобы было удобно, порог вхождения для нового человека был низкий и соблюдался единый стиль внутри компании. С RAC и VIPER не работал, не могу ничего сказать.
Дерево проекта должно полностью соответствовать реальной структуре папок на диске.
Меня очень раздражает, что структура папок в xcode может отличаться от реальной.
Люди уже начали придумывать какие-то синхронизаторы типа этого — github.com/venmo/synx.
Я с xcode работаю не долго, поэтому возмножно кто-то подскажет на сколько это полезно?
Продукцию JetBrains очень люблю, но AppCode пока еще не очень удобный, особенно если дело касается storyboards. Хотя возможно дело привычки. А вы перешли на AppCode и назад в XCode возвращаться не хотите? Может и мне стоит попробовать.
В Xcode возвращаюсь, для сборки проекта для iTunes/Fabric только.
Storyboards не пользуюсь, так что ничего не могу конкретного сказать об удобстве работы с ними в AppCode.
Я привык работать с UI в коде.
Да, это все понятно. Мне даже другое больше не нравится — когда создаешь новые папки не через XCode нужно еще дополнительно делать какие-то действия (линковать) чтобы они появились в ide. Не удобно.
Удобная структура iOS проекта