【问题标题】:Is there any problem with "use diagnostics;"?“使用诊断;”有什么问题吗?
【发布时间】:2011-06-20 07:47:24
【问题描述】:

对于 perl,我几乎总是使用:

use strict;
use diagnostics;

我建议“使用诊断”而不是 use warnings; here,但我收到了一些负面反馈。所以,现在我在想:

use diagnostics;有什么问题吗?

【问题讨论】:

    标签: perl


    【解决方案1】:

    diagnostics 不是像 warnings 这样的词法编译指示。相反,它设置了全局$^W 变量(就像使用-w 标志一样),它为所有 代码启用警告,无论它是否需要,以及你是否编写它。这有点粗鲁。 diagnostics 在生产中使用也很愚蠢。我建议您使用warnings,然后如果您需要解释,只需将您的警告发送到splain

    【讨论】:

      【解决方案2】:

      use diagnostics 会比use warnings 减慢代码的执行速度。如果您在开发过程中收到不理解的警告,可以将其打开,但最好在完成后将其关闭。

      【讨论】:

      • +1 不过,最好还是编写不发出警告和/或诊断的代码。 ;-)
      【解决方案3】:

      诊断编译指示是一种开发工具,您并不经常需要它。根据需要使用它:

      $ perl -Mdiagnostics myprog

      使用命令行-M switch 启用编译指示意味着您不必记得返回并从代码中删除仅测试的use diagnostics 行。

      【讨论】:

        【解决方案4】:

        如果您尚未升级到 perl 版本 5.12,诊断 有一个错误会掩盖特定警告。该错误已在 5.12 中修复(请参阅 perl512delta):

        诊断不再抑制使用 范围内的未初始化值(或 翻转)警告。 [perl #71204]

        一旦我意识到这个错误,我就回去并在我所有的代码中注释了use diagnostics;。如果收到警告消息,我会暂时取消注释,但总是返回并再次将其注释掉。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-08-10
          • 2015-08-22
          • 1970-01-01
          • 2012-06-17
          • 1970-01-01
          • 2011-08-28
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多