Как организовать подпрограммы для использования несколькими командами? - PullRequest
0 голосов
/ 30 мая 2018

Я работаю над созданием пакета с двумя новыми командами, скажем foo и bar.

Например, если foo.ado содержит:

program define foo
    ...
    rex
end

program define rex
    ...
end

Но моей другой команде, bar.ado, также необходимо вызвать rex.Где я должен положить rex?

Я вижу следующие несколько вариантов:

  1. Создайте файл rex.ado.
  2. Создайте файл rex.do и включите его в оба foo.ado и bar.ado, используя include "`c(sysdir_plus)'r/rex.do" внизу каждого файла.
  3. Скопируйте код в оба foo.ado и bar.ado, что выглядит некрасиво, потому что теперь код должен поддерживаться в двух местах.

Какова наилучшая практика для организации подпрограмм, которые необходимы как foo, так и bar?

Кроме того, следует ли называть подпрограмму rex, _rex,или что-то еще - может быть _foobar_rex - чтобы указать, что это на самом деле подкоманда, от которой foo и bar зависят от правильной работы, а не от отдельной команды, предназначенной для самостоятельной работы?

1 Ответ

0 голосов
/ 30 мая 2018

Создайте также файл rex.ado

Ваш вопрос слишком широкий.Лично я бы выбрал первый вариант, чтобы быть безопасным, хотя это действительно зависит от структуры вашего проекта.Иногда бывает достаточно включить rex в один файл ado.Это будет иметь место, например, если foo является командой-оболочкой.Однако для большинства других случаев использования, включая две команды, использующие общую программу, я твердо верю, что вам потребуется отдельный файл ado.

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

Что касается соглашений об именах, я бы рекомендовал использовать что-то вроде _rex только , если вы включили программу в качестве подпрограммы в файл ado.В противном случае rex будет работать нормально, а также будет указывать, что программа имеет более широкий охват в вашем проекте.На мой взгляд, также лучше дать более подробное объяснение предполагаемого использования rex, используя комментарий в начале файла ado, вместо того, чтобы пытаться включить это в название.

...