gpt4 book ai didi

perl - 在 Perl 中声明循环内部或外部的变量,最佳实践

转载 作者:行者123 更新时间:2023-12-04 16:24:28 26 4
gpt4 key购买 nike

我一直在研究一些用于数据挖掘的 Perl 库。这些库充满了用于收集和处理信息的嵌套循环。我正在使用严格模式,我总是用 my 声明我的变量在第一个循环之外。例如:

# Pretty useless code for clarity purposes:

my $flag = 1;
my ($v1, $v2);

while ($flag) {
for $v1 (1 .. 1000) {

# Lots and lots of code...

$v2 = $v1 * 2;
}
}

对于我读过的内容 here ,性能方面,最好在循环之外声明它们,但是,我的代码的维护变得越来越困难,因为某些变量的声明最终离它们实际使用的地方很远。

像这样的东西会更容易维护:
my $flag = 1;

while ($flag) {
for my $v1 (1 .. 1000) {

# Lots and lots of code...

my $v2 = $v1 * 2;
}
}

我对 Perl 没有太多经验,因为我主要是使用 C++ 工作的。在某些时候,我想开源我的大部分库,所以我希望它们尽可能让所有 Perl 大师都满意。

从专业的 Perl 开发人员的角度来看,这些选项之间最合适的选择是什么?

最佳答案

一般规则是尽可能晚地声明每个变量。

如果不需要在循环的迭代中保留变量的值,则在循环内声明它,或者作为 for 的循环控制变量声明它。环形。

如果它需要在循环迭代中保持静态(如您的 $flag ),则在循环之前立即声明它。

是的,如果每次执行块时都丢弃并重新分配变量,则需要支付最小的速度成本,但编程和维护成本是迄今为止最重要的效率,应始终放在首位。

您不应该在代码开始工作并发现其运行速度过慢之前对其进行优化;即便如此,将声明移到文件顶部在可能会产生有用差异的妥协列表中还有很长的路要走。

关于perl - 在 Perl 中声明循环内部或外部的变量,最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21343608/

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