Сохранение одного и того же фрагмента кода в нескольких файлах - PullRequest
1 голос
/ 17 декабря 2009

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

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

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

Кто-нибудь может придумать, как решить эту проблему? т.е. поддерживать идентичный фрагмент кода в нескольких файлах.

Ответы [ 4 ]

2 голосов
/ 17 декабря 2009

Я не уверен, что вы подразумеваете под "функцией auth для этой цели должна быть основная программа", но типичным решением Unix может быть использование здесь make (1) и cpp (1). *

1 голос
/ 18 декабря 2009

Вместо того, чтобы хранить код аутентификации в отдельном файле, назначьте один из существующих сценариев в качестве основного или основного сценария. Используйте это для редактирования / отладки / работы над кодом аутентификации. Затем добавьте процесс сборки / пакетной обработки, как вы говорите, который копирует код аутентификации из основного сценария во все остальные сценарии.

Таким образом, вы все равно можете отлаживать и работать с главным сценарием в любое время, вам не нужно беспокоиться о еще одном файле, а процесс сборки / развертывания поддерживает все в синхронизации.

Вы можете использовать метод, подобный предложенному @Priyank Bolia, чтобы упростить поиск / замену необходимого фрагмента кода.

1 голос
/ 17 декабря 2009

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

// $ запуска тегов общего аутентификации ..... код здесь ..... // $ конечных теги общей аутентификация

В вашем событии prebuild просто найдите эти теги и замените их кодом импорта, а затем завершите компиляцию.

VS поддерживает события до посткомпоновки, которые могут вызывать внешние процессы, но не взаимодействуют напрямую со средой (например, пакетными файлами или сценариями).

0 голосов
/ 17 декабря 2009

Я безобразно могу представить себе:

содержит оригинальный код во всех файлах и окружает его такими маркерами, как:

///To be replaced automatically by the build process to the latest code
String str = "my code copy that can be old";
///Marker end.

Этот блок кода может быть автоматически заменен процессом сборки из одного общего файла кода.

...