это продолжение обсуждения, которое я начал здесь .Я хотел бы найти лучший способ для модуляции исходного кода Delphi, так как я не разбираюсь в этой области.Я буду благодарен за все ваши предложения.
Позвольте мне опубликовать то, что я уже написал там .
Программное обеспечение, разработанное компанией, в которой я работаю, состоит из более чем100 модулей (большинство из них являются драйверами для разных устройств).Большинство из них используют один и тот же код - в большинстве случаев это классы.Проблема в том, что эти классы не всегда помещаются в отдельные, автономные модули PAS.Я имею в виду, что общий код часто помещается в блоки, содержащие код, специфичный для модуля.Это означает, что когда вы исправляете ошибку в разделяемом классе, недостаточно скопировать модуль PAS, в котором он определен, во все программные модули и перекомпилировать их.К сожалению, вы должны копировать и вставлять фиксированные фрагменты кода в каждый модуль, один за другим, в соответствующий модуль и класс.Это занимает много времени, и это то, что я хотел бы устранить в ближайшем будущем, выбрав правильный подход - пожалуйста, помогите мне.
Я думал, что использование BPL, распространяемых с EXE, было бы хорошим решением, ноу этого есть некоторые недостатки, как некоторые упомянули во время предыдущего обсуждения.Худшая проблема заключается в том, что если для каждого EXE-файла требуется несколько BPL, специалистам службы технической поддержки нужно будет знать, для каких EXE-файлов нужны какие-либо BPL, а затем предоставить конечным пользователям надлежащие файлы.Пока у нас нет программы обновления программного обеспечения, это будет очень полезно как для наших технических специалистов, так и для конечных пользователей.Они наверняка потеряются и рассердятся: - /.
Также могут возникнуть проблемы совместимости - если один BPL используется многими EXE-файлами, модификация этого BPL может быть полезной для одного EXE-файла и плохой для некоторых других.
Что мне делать, чтобы быстрее исправлять ошибки во многих проектах?Я думаю об одном из следующих подходов.Если у вас есть идеи получше, пожалуйста, дайте мне знать.
- Поместите общий код в отдельные и автономные модули PAS, поэтому, когда в одном из них есть исправление ошибки, достаточно скопировать его на всепроекты (перезаписать старые файлы) и перекомпилировать все из них.Это означает, что каждый модуль копируется столько раз, сколько проектов он использует.
Это решение, по-видимому, подходит для редко изменяемого кода.Но у нас также есть блоки с общими функциями и процедурами, которые часто подвергаются изменениям.Было бы невозможно выполнить одну и ту же процедуру (копировать и перекомпилировать столько проектов) каждый раз, когда кто-то добавляет новую функцию в этот файл.
- Создание BPL для всего общего кода, но связывание ихEXE-файлы, так что EXE-файлы автономны.
Для меня это кажется лучшим решением сейчас, но есть некоторые недостатки.Если я исправлю ошибку в BPL, каждый программист должен будет обновить BPL на своем компьютере.Что если они забудут это сделать?Тем не менее, я думаю, что это небольшая проблема.Если мы позаботимся о том, чтобы информировать друг друга об изменениях, все должно быть хорошо.Как вы думаете?
- И последняя идея, предложенная CodeInChaos (я не знаю, правильно ли я ее понял).Обмен файлами PAS между проектами.Это, вероятно, означает, что нам придется хранить общий код в отдельной папке и заставить все проекты искать этот код там, верно?И всякий раз, когда необходимо изменить проект, он должен быть загружен из SVN вместе с папкой общих файлов, я думаю.Каждое изменение в общем коде должно вызывать перекомпиляцию каждого проекта, использующего этот код.
Пожалуйста, помогите мне выбрать хорошее решение.Я просто не хочу, чтобы компания теряла гораздо больше времени и денег, чем необходимо, на исправления ошибок, просто из-за глупого подхода к разработке программного обеспечения.До сих пор никто не заботился об этом, и вы можете себе представить, сколько проблем это вызывает.
Большое спасибо.