0-5.jpeg

很多程序员的想法:“编译器的警告信息只不过是给过分小心和过于书呆子气的人看的。它们只是警告而已。如果导致的后果很严重,它们就是错误了。所以干脆忽略它们就是了。”

当程序中出现一个编译错误时,编译器会拒绝执行脚本。我们别无选择 —— 必须要先修正错误,再继续前行。

因为,在PHP这种解释型脚本语言里,出现警告信息依然可以正常的运行,也可以调整错误等级,直接忽略警告信息。所以,需要我们在开发环境就需要把错误级别设置到警告级别,把所有的警告报出来,并一一解决它。

那么忽略警告信息继续开发代码,会导致什么状况呢?这样做等于是坐在了一个嘀嗒作响的定时炸弹上。而且,它很有可能在最糟糕的时刻爆炸。

例如,一个关于未被定义的变量的警告,可能不会产生什么恶劣影响,但却有可能是暗示某些变量被错误使用了。

想象一下,有组织地忽略代码中类似这样的错误会导致什么样的后果。 代码的行为会变得无法预测,其质量会直线下降。

修改PHP的错误等级为显示警告信息,这个小小的设置,可以大 大提升升团队提交到源码控制系统中的代码质量。

在开始一个项目的时候,要把相关的设置都准备好。在项目进行到一半的时候,突然改变警告设置,有可能会带来颠覆性的后果,导致难以控制。

编译器可以轻易处理警告信息,可是你不能。

推荐使用PhpStorm来书写PHP代码,它可以检测出来没有定义的变量。

将警告视为错误

提交带有警告的代码,就跟提交有错误或者没有通过测试的代码一样,都是极差的做法。提交的代码不应该产生任何警告信息。

切身感受

警告给人的感觉就像……哦,警告。它们就某些问题给出警告,来吸引开发人员的注意。

平衡的艺术

  1. 虽然这里探讨的主要是编译语言,解释型语言通常也有标志,允许运行时警告。使用相关标志,然后捕获输出,以识别并最终消除警告。
  2. 由于编译器的 bug 或是第三方工具或代码的原因,有些警告无法消除。如果确实没有应对之策的话,就不要再浪费更多时间了。但是类似的状况很少发生。
  3. 应该经常指示编译器:要特别注意别将无法避免的警告作为错误进行提示,这样就不用费力去查看所有的提示,以找到真正的错误和警告。
  4. 弃用的方法被弃用是有原因的。不要再使用它们了。至少,安排一个迭代来将它们(以及它们引起的警告信息)安全地移除掉。
  5. 如果将过去开发完成的方法标记为弃用方法,要记录当前用户应该采取何种变通之策,以及被弃用的方法将会在何时一起移除。