perl – 我应该使用common :: sense还是只是坚持使用strict和`use warnings?

前端之家收集整理的这篇文章主要介绍了perl – 我应该使用common :: sense还是只是坚持使用strict和`use warnings?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我最近从CPAN安装了一个模块,并注意到其中的一个依赖关系是 common::sense,这是一个模块,用于启用所有你想要的警告,而没有一个.从模块的概要:
use common::sense;

# supposed to be the same,with much lower memory usage,as:
#
# use strict qw(vars subs);
# use feature qw(say state switch);
# no warnings;
# use warnings qw(FATAL closed threads internal debugging pack substr malloc
#                 unopened portable prototype inplace io pipe unpack regexp
#                 deprecated exiting glob digit printf utf8 layer
#                 reserved parenthesis taint closure semicolon);
# no warnings qw(exec newline);

除了undef警告,有时候是麻烦,我通常发现标准警告是好的.是否值得切换到common :: sense而不是我的正常使用严格;使用警告

解决方法

虽然我喜欢减少锅炉代码的想法,但我深深怀疑Modern :: Perl和common :: sense这样的工具.

我这样的模块的问题是它们捆绑了一组行为,并隐藏了具有可变意义的行为glib名称.

例如,Modern :: Perl今天包括启用一些perl 5.10功能并使用严格和警告.但是当Perl 5.12或5.14或5.24出现的时候会出现什么新的好东西呢,社区发现我们需要在各地使用frobnitz pragma?将现代:: Perl提供一套一致的行为,否则它将保持“现代”.如果MP随着时间的推移,它将破坏不符合编译器要求的锁定步骤的现有系统.它增加额外的兼容性测试升级.至少这是我对MP的反应.我会第一个承认,色彩比我更聪明10倍,程序员更好 – 但我仍然不同意他对这个问题的判断.

common :: sense也有一个名字问题.谁有常识的概念?会随着时间的推移而改变吗?

我喜欢使用一个可以轻松创建自己的标准模块的模块,甚至为特定任务创建一组相关的模块/编译指示(如日期时间操作,数据库交互,HTML解析等).

我喜欢Toolkit的想法,但它有几个原因:它使用源过滤器,宏系统过于复杂和脆弱.我非常尊重Damian Conway,他制作出辉煌的代码,但有时候他有点太过分了(至少在生产中,实验是好的).

我没有足够的时间打字使用严格;使用警告;感觉需要创建我自己的标准导入模块.如果我觉得强烈需要自动加载一组模块/编译指示,那么类似于Toolkit的类似于创建标准功能组的工具将是理想的:

use My::Tools qw( standard datetime sqlite );

要么

use My::Tools;
use My::Tools::DateTime;
use My::Tools::sqlite;

工具包非常接近我的理想.它的致命缺陷是一个很大的障碍.

关于拼写选择是否有意义,那就是品味的问题.我宁愿在我需要做一些需要它的东西的块中使用偶尔没有严格的“foo”或者没有警告“bar”,而不是关闭整个文件的检查.另外,IMO,内存消耗是一个红色的鲱鱼.因人而异.

更新

看起来有这么多(多少?)不同的模块在CPAN上浮动.

>有latest,不再是最新的.演示部分命名问题.
>另外,uni::perl增加了unicode部分组合.
> ToolSet提供了Toolkit的一些功能,但没有源代码过滤器.
>我将在这里加入Moose,因为它会自动向呼叫包添加严格和警告.
>最后Acme::Very::Modern::Perl

这些模块的扩散和重叠需求的潜力又增加了另一个问题.

如果你写的代码如下:

use Moose;
use common::sense;

什么选项可以启用哪些pragmas?

原文链接:https://www.f2er.com/Perl/172755.html

猜你在找的Perl相关文章