Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Objective-C

Войти
Регистрация
Восстановить пароль
 
smth
177 / 46 / 6
Регистрация: 23.06.2011
Сообщений: 248
#1

В проекте быстро растет количество файлов исходного кода. Все ли я делаю так? - Objective-C

11.12.2015, 23:07. Просмотров 409. Ответов 5

Добрый вечер!
Делаю один объемный проект (клиент-сервер, много вьюх, большая storyboard, rest api) на Obj-C и начинает потихоньку напрягать быстрое "размножение" файлов исходного кода: на каждый чих - минимум два файла, а то и три (если xib'ы отдельно от сториборда делаю). Очень непривычно после C# или php: там, например, спокойно можно было объединить логически связанные сущности в один файл (например, гружу из базы компанию-отдел-сотрудников - в одном файле несколько классов описал, удобно). Изучал различные другие проекты и примеры с гитхаба, там - то же самое.

Тем не менее, хочу получить ответ на вопрос: это нормальное "поведение" для Objective C? А то уже жалеть начинаю, что не на swift начал, конца проекта еще не видно, а у меня уже почти 30 папок (групп), а уж файлов скоро под сотню будет. Боюсь, как бы теряться там не начал. Может, как-то можно "упаковать" несколько классов в одну пару .h + .m файлов? А то уж прям жаба душит ради синглтона из 10 строк отдельную пару файлов создавать.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.12.2015, 23:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос В проекте быстро растет количество файлов исходного кода. Все ли я делаю так? (Objective-C):

В проекте 4 кнопки, работает только одна. Что делаю не так? - Delphi
Доброго времени суток! есть проект unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils,...

Связь заголовочного и исходного файлов в проекте - C++
Добрый день! Учу многофайловые программы. Определение функции пишу в заголовочном файле. Вызов в делаю в исходном коде. Это правильно? ...

Как быстро собрать все используемые в проекте DLL - C++ Qt
Доброго времени суток. Похоже, что вопрос нуба, но всё-же. Есть ли возможность быстро определить или автоматически собрать все...

Быстро растет размер wcf сервиса - C# WCF
Здравствуйте. Я занимаюсь изучением ASP.NET и WCF. Передо мной стоит задача - создать службу, которая будет в таймере опрашивать сеть...

Может я че не так делаю, но уже все проверил... Access2000 - Базы данных
Простейшая программа, элементарный код, закупка, продажа, реализация, но вот косяк - в одной таблице учитывающей наличие на складе в...

Запуск исходного кода из файлов - Программирование
Я знаю что об этом уже писали... Значит есть ЕХЕ файл при запуске которого он должен открыть модули-файлы и запустить исходный код от...

5
Vorona
Peace 2 all shining faces
668 / 530 / 45
Регистрация: 05.03.2010
Сообщений: 1,283
13.12.2015, 11:35 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Сто файлов? Лол
Это не много вообще, главное разделяйте их по предназначению или еще как-то, тогда будет удобно ориентироваться
Например, бизнесс логика в одной папке, представления а другой, нетворкинг - в третьей и тд
Еще есть подход: library-oriented programming, это когда отдельные модули приложения выделяете в отдельные библиотеки.

Но на самом деле, да, в objective-c принято отдельный класс создавать в отдельном файле, в большинстве из-за хедеров. Но серьезно, создавай вы по три класса в файле, проект проще не станет, а иногда только сложнее.

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

Насчет упаковки нескольких классов в один хедер файл, то и это один из подходов, только он часто юзается как зонтик для остальных хедеров используется такой подход в библиотеках. Т.е создаете один хедер, который включает в себе другие хедеры или просто объявляет несколько классов.

Но я бы советовал придерживаться существующих и проверенных практик и проблем будет меньше.
0
smth
177 / 46 / 6
Регистрация: 23.06.2011
Сообщений: 248
13.12.2015, 17:01  [ТС] #3
Почти сотня файлов при том, что в сториборде 6 экранов всего на текущий момент А будет по самым скромным подсчетам около 15-20.

Конечно же, группирую файлы, в основном в "стиле" hmvc.

Я не до конца понял вот эту фразу:
Насчет упаковки нескольких классов в один хедер файл, то и это один из подходов, только он часто юзается как зонтик для остальных хедеров используется такой подход в библиотеках. Т.е создаете один хедер, который включает в себе другие хедеры или просто объявляет несколько классов.
Я понял, что не возбраняется объявлять несколько классов в одном h-файле, а с m-файлами как правильно поступать? Для каждого класса свой или тоже можно несколько implementation в одном делать? И про зонтик не понял.
0
Vorona
Peace 2 all shining faces
668 / 530 / 45
Регистрация: 05.03.2010
Сообщений: 1,283
13.12.2015, 17:47 #4
Цитата Сообщение от smth Посмотреть сообщение
Я понял, что не возбраняется объявлять несколько классов в одном h-файле, а с m-файлами как правильно поступать? Для каждого класса свой или тоже можно несколько implementation в одном делать? И про зонтик не понял.
можно как угодно, и в одном .m файле несколько имплементаций, и для каждого .m файла отдельная имплементация имея общий хедер.
Зонтик это такой объеденяющий хедер файл. Например у вас есть a.h, b.h, c.h и есть all.h, в котором вы импортируете a,b,c и таким образом остальным пользователям вашего модуля\библиотеки не нужно вручную подключать кучу этих хедеров, а использовать только all.h.

Но снова-таки, правильно поступать, это стараться следовать советам Apple и придерживаться общепринятых стандартов. Кол-во файлов в проекте это вообще не проблема, при правильной группировке и наименованию, сложность понимания расти не должна. Вам нужен модуль X или скрин Y, вы идете в эту директорию и все там находите, вам нужен нетворкинг, идете туда и там все лежит.

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

Цитата Сообщение от smth Посмотреть сообщение
что в сториборде 6 экранов всего на текущий момент А будет по самым скромным подсчетам около 15-20.
вот, кстати, еще совет - не храните все приложение в одном сториборде.
Сториборд, он как бы подсказывает своим названием, что предназначен для какой-то стори\сценария. Например сценарий логина - пользователь видит начальный скрин, откуда решается что делать дальше, потом разветвление - либо логин скрин, либо скрин регистрации, на регистрации возможно нужно подтвердить имеил или еще что-то сделать. И на этом хватит. Дальше лучше создать новый сториборд для нового сценария. Например сценарий настроек приложения и так далее.
Более мелкие сториборды будет проще мержить и проще понимать.
1
smth
177 / 46 / 6
Регистрация: 23.06.2011
Сообщений: 248
17.12.2015, 13:20  [ТС] #5
Да, со кошмаром огромного сториборда я уже как-то раз столкнулся. Он по пол минуты открывался на моем i7 с 16 гигами оперативки. (хотя, может это нормально и я просто не видел по-настоящему огромные сб?). Осложнялось это тем, что я по незнанию в этом же сториборде создавал экраны с десятком uiview, внутри которых была друг на друге куча других uiview (они потом превращались в 3х-мерный куб с разной высотой сторон). С этого экрана было что-то около 90 аутлетов (я еще тогда задавал вопрос, на который в то время так никто и не ответил - чем лучше пользоваться для закрытых пременных, property или ivar, но сейчас уже знаю ответ). Это было через месяц после того, как я впервые открыл мануал по ObjC.

Теперь как раз я и стараюсь все максимально разделить и создавать reusable (как это по-русски, переиспользуемые?) компоненты. Что, правда, привело к созданию этой темы ) Но так все равно лучше, чем тогда.
0
LeninRedStar
5 / 5 / 4
Регистрация: 22.11.2015
Сообщений: 21
21.12.2015, 19:40 #6
StoryBoard можно бить на отдельные стори, иначе он становится реально очень громоздким и неудобным (не только из-за того, что долго грузится а в принципе становится большой).
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.12.2015, 19:40
Привет! Вот еще темы с ответами:

Компиляция нескольких файлов исходного кода - Visual Studio
Здравствуйте, возник такой вопрос, а каким образом в VS2010 можно заставить скомпилировать код, который состоит из двух файлов? Ну например...

Большое количество входных параметров от динамических форм. Что я делаю не так? - C# MVC
Здравствуйте. Посоветуйте пожалуйста новичку. Есть стойкое чувство, что я выбрал неправильный путь генерации динамических форм с большим...

Компиляция и сборка нескольких файлов исходного кода - C (СИ)
Имеется такая программа из книги Кернигана и Ритчи: #include <stdio.h> #include <stdlib.h> /*для atof()*/ #define MAXOP 100 /*...

Для файла исходного кода на языке Java подсчитать количество зарезервированных (ключевых) слов - Java SE
И вот такое последнее задание нужно для файла исходного кода на языке Java подсчитать количество зарезервированных (ключевых) слов. и вот...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Yandex
Объявления
21.12.2015, 19:40
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru