perl – 我应该使用common :: sense还是只是坚持使用strict和`us
我最近从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,不再是最新的.演示部分命名问题. 这些模块的扩散和重叠需求的潜力又增加了另一个问题. 如果你写的代码如下: use Moose; use common::sense; 什么选项可以启用哪些pragmas? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |