opendir
与Perl Best Practices中open
的政策不同,是否有原因?
我正在考虑至少这两项政策:
答案 0 :(得分:3)
Perl最佳实践的原始规则(对于您提到的第一个政策)是
不要使用裸字文件句柄
不仅仅适用于open
。 Perl :: Critic在很大程度上基于PBP,但确实有所不同(来自perldoc):
Perl :: Critic是一个可扩展的框架,用于为Perl源代码创建和应用编码标准。从本质上讲,它是一个静态源代码分析引擎。 Perl :: Critic与许多Perl :: Critic :: Policy模块一起分发,它们试图强制执行各种编码指南。大多数政策模块都基于Damian Conway的书Perl Best Practices。 但是,Perl :: Critic不仅限于PBP,甚至还支持与Conway相矛盾的政策。
因此,Perl :: Critic没有对opendir强制执行相同的规则这一事实可能主要是疏忽。也可以归咎于PBP中的示例仅使用open
这一事实。我建议在CPAN上提交一个错误(查看代码,它只会改变一行)。
第二条规则实际上并非来自PBP,但在我看来它同样适用于opendir。再一次,关于CPAN的作者的错误报告将是一个好主意,因为它将再次只是一行更改。如果事实上这是一个有意的决定,你可能会得到更具体的反馈。
更正:它有点不同,但第二个政策中PBP中最接近的规则是
如果维护人员认为有必要(并且不担心它会破坏现有代码太多),那么修正该政策将不仅仅是一个班轮,但仍然相对容易。显式关闭文件句柄,并尽快关闭。
答案 1 :(得分:0)
狂野的猜测:文件的使用频率更高,而且还没有人在目录句柄上进行“lint-ish”工作。
仅供参考:如果您真的想要实施这些,您可以实现一些东西来模拟Ruby open + block隐喻:创建一个打开/关闭包装子,它将另一个子作为参数来执行打开之间的实际I / O并关闭。我可以放一个代码示例,但是我有点偏离主题。
答案 2 :(得分:0)