gpt4 book ai didi

perl - 包应该是全局的 'use' d 还是来自需要它们的函数?

转载 作者:行者123 更新时间:2023-12-04 23:01:33 24 4
gpt4 key购买 nike

如果这个问题不适合 StackOverflow,我们深表歉意。我怀疑答案主要是见仁见智(除非其中一个风格指南有推荐)。

我的代码看起来像这样

use File::Temp;

sub foo {
...
}
sub bar {
...
}
sub baz {
my $fh = tempfile();
...
}

baz 是唯一使用 File::Temp 的子例程,我没有使用 AutoLoader。将 use 声明放在 baz 中是否合理,还是应该将其留在脚本顶部?

最佳答案

因为(正如 chepner 所说),技术上没有区别,这确实是风格问题。

将所有内容放在首位的优点:

  • 一目了然所有的直接模块依赖是什么

  • 更易于维护 - 如果您需要使用库移动代码,则无需记住移动库。

    请注意,同样的逻辑也适用于变量声明,但在这种情况下,作用域问题严重胜过“记住移动声明”问题,因此您应该在尽可能接近 where 的最内层范围内声明变量尽可能使用它们。

  • 对于您自己的代码在 BEGIN{} block 中包含依赖于所有正在加载的库的复杂逻辑的深奥情况(例如,从所有加载的库中调用一个特别命名的方法 - 这我已经完成了)-如果某些库的 use 调用在 BEGIN{} block

  • 之后,您将遇到错误

将它们全部放在首位的缺点:

  • 有人可能会争辩说,这会降低代码的可读性,因为您需要找到文件的开头才能查看从模块中导入的内容。坦率地说,我不相信,但我听说过它,它至少有一些优点。

关于perl - 包应该是全局的 'use' d 还是来自需要它们的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11784096/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com