我正在创建一个包含两个新命令的包,比如foo
和bar
。
例如,如果foo.ado
包含:
program define foo
...
rex
end
program define rex
...
end
但我的另一个命令bar.ado
也需要拨打rex
。我应该把rex
放在哪里?
我看到以下几个选项:
rex.ado
文件。rex.do
文件,并使用每个文件底部的foo.ado
从bar.ado
和include "`c(sysdir_plus)'r/rex.do"
中包含该文件。foo.ado
和bar.ado
,这看起来很难看,因为现在代码必须在两个地方维护。组织foo
和bar
所需的子程序的最佳做法是什么?
此外,如果子例程被调用rex
,_rex
或其他东西 - 可能是_foobar_rex
- 以表明它实际上是foo
和{{}}的子命令{1}}依赖于正确的工作而不是单独的命令?
答案 0 :(得分:1)
你的问题有点过于宽泛。就个人而言,我会选择第一个安全选项,尽管它实际上取决于项目的结构。有时在单个rex
文件中包含ado
可能就足够了。例如,如果foo
是包装器命令,则会出现这种情况。但是,对于大多数其他用例,包括共享一个共同程序的两个命令,我坚信你需要一个单独的ado
文件。
第二个选项显然是不必要的,因为第一个选项做同样的事情,而且每次调用它都不需要加载程序。第三种选择可能是编程环境中最糟糕的选择,因为它可能会产生冲突并且难以维持。
关于命名约定,如果将程序作为_rex
文件中的子例程包含在内,我建议使用ado
之类的内容。否则,rex
将会很好,并且还表明该程序在您的项目中具有更广泛的范围。在我看来,在rex
文件的开头使用注释来提供ado
的预期用法的更详细说明,而不是试图将其合并到名称中。