gpt4 book ai didi

performance - 检查 Perl 函数参数值得吗?

转载 作者:行者123 更新时间:2023-12-03 11:16:23 24 4
gpt4 key购买 nike

有很多关于 MooseX::Method::Signatures 的讨论,甚至在此之前,诸如 Params::Validate 之类的模块旨在对方法或函数的每个参数进行类型检查。我正在考虑将前者用于我 future 的所有 Perl 代码,包括个人和工作场所。但我不确定这是否值得努力。
我在想我之前看过(和写过)的所有 Perl 代码都没有执行这样的检查。我很少看到一个模块这样做:

my ($a, $b) = @_;
defined $a or croak '$a must be defined!';
!ref $a or croak '$a must be a scalar!";
...
@_ == 2 or croak "Too many arguments!";
也许是因为没有某种辅助模块,工作量太大,但也许是因为在实践中我们不会向函数发送多余的参数,也不会向期望标量的方法发送 arrayrefs - 或者如果我们这样做,我们有 use warnings;我们很快就听说了 - 一种 duck typing 方法。
那么 Perl 类型检查是否值得性能打击,或者它的优势主要体现在 C 或 Java 等已编译的强类型语言中?
我对任何有编写使用这些模块的 Perl 经验并看到使用它们的好处(或没有)的人的答案感兴趣;如果您的公司/项目有任何与类型检查有关的政策;以及类型检查和性能方面的任何问题。
更新: 我最近读了一篇关于这个主题的有趣文章,名为 Strong Testing vs. Strong Typing 。忽略轻微的 Python 偏见,它本质上表明类型检查在某些情况下可能令人窒息,即使您的程序通过了类型检查,也不能保证正确性 - 正确的测试是确定的唯一方法。

最佳答案

是的,它值得——防御性编程是永远值得的事情之一。

关于performance - 检查 Perl 函数参数值得吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2330599/

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