在我们的产品中,我们有一个很大的实用程序文件,我们需要(带do
)在很多文件的开头.有没有理由不把它变成一个模块?例如,而不是这样做:
do '../dbi_utilities.pl'; our ($db,$user,$pw,$attr); my $Data = DBI->connect($db,$user,$pw,$attr) or die "Could not connect to database: $DBI::errstr";
我不能这样做吗?:
use AppUtil; my $Data = AppUtil->connect();
Tanktalus.. 8
不这样做的唯一原因是时间.
也就是说,清理界面以及所有调用应用程序都需要时间来使用新界面.
当你开始使用正确的测试("make test"或"./Build test"或只是"证明......")并且能够检查你的变化时,你现在花费的时间将会超过你的成本在检查之前不会破坏任何东西.所以,无论如何,转换.请注意,这不是一个免费的收获.
不这样做的唯一原因是时间.
也就是说,清理界面以及所有调用应用程序都需要时间来使用新界面.
当你开始使用正确的测试("make test"或"./Build test"或只是"证明......")并且能够检查你的变化时,你现在花费的时间将会超过你的成本在检查之前不会破坏任何东西.所以,无论如何,转换.请注意,这不是一个免费的收获.
通过将代码放入具有适当重构的模块中,可以轻松进行测试.我在Perl Journal的"脚本作为模块"一文中以及Perlmonks上的"脚本如何成为模块"中讨论了这个问题.
祝好运,
使用do(),您每次都在加载和编译utilities.pl文件,如果您多次执行(),可能会导致问题.此外,use
在编译时完成,这将允许您的程序更快失败,甚至测试perl -wc
.
最后,将它保存在一个包中可以保护它的命名空间,这可以在项目增长时提供帮助.
我强烈建议将你的utilites.pl转换为一个适当的Perl包use
.