Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Организация проекта в Delphi (2010)


Автор: RomanEEP 2.7.2010, 16:38
Я раньше использовал такой подход:
в uses проекта подключается минимум модулей, в директории проекта подключаю папки, где лежат исходники этого проекта.

Часто вижу проекты организованные подругому: в uses проекта подключены все его модули с путями относительно проекта, 
соответственно в директориях проекта - подключается только third-party библиотеки

Вопрос: Какой подход правильней, их плюсы и минусы.

Сам пока думаю так
1 способ:
+ Легко реструктурирую проект через Explore/Windows Commander и через SVN, в проекте достаточно подредактировать пути.
- Криво работают анализаторы кода, рефакторинг не хотят кушать модули неподключенные к проекту, 
в общем тупит куча разных автоматических инструментов (кот пользуюсь не часто, но дискомфорт от этого есть)

2 способ
+ могу изменить структуру проекта в дереве прямо в delphi (не знаю как отразится на svn)
+ наверное Compile работает надежнее (меньше вероятности, что он забудет перекомпилить изменившийся модуль)

Кто как делает и почему?

И вопрос по организации в связке с SVN:
каждый члена команды в настройках проекта забивают свой Run-Parameters. Естественно постоянно по случайности коммитят проект и у всех остальных
их настройка слетает. как от этого избавиться?


Автор: Alexeis 2.7.2010, 16:49
Цитата(RomanEEP @  2.7.2010,  15:38 Найти цитируемый пост)
каждый члена команды в настройках проекта забивают свой Run-Parameters. Естественно постоянно по случайности коммитят проект и у всех остальных
их настройка слетает. как от этого избавиться?

  Каждый пусть создаст новый проект в формате <имя проекта>.<имя пользователя> и закомитит его в SVN. И пусть каждый юзает только свой проект. Конечно же возникнут проблемы с тем, чтобы каждый добавлял новые файлы в свой проект. Но тут уж ничего не сделаешь. VC++ поступает хитрее. Она для каждого пользователя создает файл персональных настроек, при том, что файл проекта общий. 

Автор: RomanEEP 2.7.2010, 23:07
Alexeis, это не выход. Сейчас просто слетают параметры проекта, это относительно фигня, а так время от времени у соседа вообще проект после обновления будет отказываться компилиться.

Автор: CodeMonkey 3.7.2010, 09:23
Цитата(RomanEEP @  2.7.2010,  17:38 Найти цитируемый пост)
Вопрос: Какой подход правильней, их плюсы и минусы.

Правильно - комбинация этих двух.

Указать модуль без пути + вписать его папку в поиск - это делается для библиотек (FastMM, JCL, etc). Потому что на разных машинах библиотеки стоят в разных путях. Часто относительный путь к ним записать нельзя. Кроме того, перенося проект на другую машину, библиотеки не переносятся вместе с проектом. Если надо - их ставят отдельно.

Все прочие файлы - относятся конкретно к этому проекту. Они хранятся в его папке или подпапках. Иногда - в родительской папке (если проект входит в группу проектов и мы подключаем общие файлы). Тут логично указать относительный путь, ибо вписывать папки в настройки - явный overkill. Да и это создаёт сложности с переносом проекта на другую машину.

Автор: RomanEEP 3.7.2010, 16:30
CodeMonkey,  я в пути проекта всегда впиваю относительные пути, вопрос именно в том,
нужно ли подключать все модули проекта в список uses самого проекта. Для компиляции они там не нужны. Тогда для чего это делают?

Автор: CodeMonkey 3.7.2010, 21:47
Цитата(RomanEEP @  3.7.2010,  17:30 Найти цитируемый пост)
нужно ли подключать все модули проекта в список uses самого проекта. Для компиляции они там не нужны. Тогда для чего это делают? 

А не так тогда понял. 

В uses головного проекта вписываются с путём те файлы, которые считаются частью проекта. Даже если они не нужны там для компиляции. Если файл оттуда убрать (указав его только во вложенном модуле) - файл не будет считаться принадлежащим проекту. Это будет как бы часть библиотеки.

Автор: RomanEEP 4.7.2010, 07:34
Понятно, тогда что стоит за тем. что "файл считается принадлежащим проекту" и что оно дает мне.
Например, как я уже писал получается гемор  с тем, чтобы перетащить файл из папки в папку:
 сейчас я делаю команду svn move и всё, а так мне придется подправлять файл проекта.
Какие плюсы этого подхода?

Автор: chip_and_dayl 4.7.2010, 10:21
Цитата(RomanEEP @  4.7.2010,  07:34 Найти цитируемый пост)
Понятно, тогда что стоит за тем. что "файл считается принадлежащим проекту" и что оно дает мне.

Допустим есть Ф-ция TestFunc, которая принимает один параметр следующего содержания "Тестова ф-ция" и была дана команда, поменять ее содержимое на "Тестовая ф-ция 2", мы в Делфях жмем Crtl+F и появляется окно поиска. Так вот если мы туда введем название ф-ции, то она найдет ф-цию в тех модулях, которые считаются "принадлежащим проекту". А потом будем думать почему программа передает в ф-цию то "Тестова ф-ция" то "Тестова ф-ция 2" .

Или второй пример. Есть переменная/ф-ция/форма и т.д. Хотелось изучить ее поведение, то беж где она вызывается или кем используется, чтобы потом ее переделать или правильно использовать. Но так как поиск нашел все это в файлах "принадлежащих проекту", то мы можем упустить главное, допустим в том модуле, которую поисковик Делфи не нашел, переменная может сбрасываться в другое значение, что мы не ожидали

Добавлено через 2 минуты и 50 секунд
Цитата(chip_and_dayl @  4.7.2010,  10:21 Найти цитируемый пост)
что "файл считается принадлежащим проекту" 

Если я правильно понял CodeMonkey, то это считается, что модуль объявлен в файле *.dpr, то беж мы явно указываем, что модуль относится к нашему проекту

Автор: RomanEEP 4.7.2010, 15:35
Цитата(chip_and_dayl @  4.7.2010,  10:21 Найти цитируемый пост)
Если я правильно понял CodeMonkey, то это считается, что модуль объявлен в файле *.dpr, то беж мы явно указываем, что модуль относится к нашему проекту

модуль обяъвлен в dpr, значит "модуль принадлежит проекту", "модуль принадлежит проекту" - значит модуль объявлен в dpr... Великолепный пример рекурсии smile 


Цитата(chip_and_dayl @  4.7.2010,  10:21 Найти цитируемый пост)
мы в Делфях жмем Crtl+F и появляется окно поиска

У меня весь проект хранится в одном каталоге с вложенными папками, поэтому я нажимаю Ctrl+Shift+F (который настроен на поиск в корневом каталоге проекта) и я ищу во ВСЕХ модулях моего проекта.

Автор: chip_and_dayl 4.7.2010, 16:53
Цитата(RomanEEP @  4.7.2010,  15:35 Найти цитируемый пост)
У меня весь проект хранится в одном каталоге с вложенными папками

У вас даsmile У других возможно нет. Допустим есть два проекта, которые используют общие модули, а их не положишь в папку одного проекта или второго (дублирование не выход)  smile


Цитата(RomanEEP @  4.7.2010,  15:35 Найти цитируемый пост)
модуль обяъвлен в dpr, значит "модуль принадлежит проекту", "модуль принадлежит проекту" - значит модуль объявлен в dpr... Великолепный пример рекурсии  

Та ладноsmile Вы уже сами создали рекурсию  smile 

Автор: CodeMonkey 4.7.2010, 17:13
Цитата(RomanEEP @  4.7.2010,  08:34 Найти цитируемый пост)
и что оно дает мне.

Много всего по мелочи. Лениво перечислять. Менеджер проектов давно открывали?

Автор: RomanEEP 4.7.2010, 18:46
Цитата(CodeMonkey @  4.7.2010,  17:13 Найти цитируемый пост)
Много всего по мелочи. Лениво перечислять. Менеджер проектов давно открывали?

Открывал, есть возможность перетаскивать и переименовывать файлы, при этом, как я понимаю с svn косяк будет. 
Связка TortoiseSVN + JEDI VCS Integration дает мне тоже самое, только в связке с svn к тому же.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)