我听过很多次使用define()来创建全局常量是一个糟糕的解决方案。但我从来没有听说过为什么会这样。
应该采取什么方式呢?
答案 0 :(得分:2)
可能你已经读过一些关于不污染全局命名空间的内容。至少这是你应该试图避免全局常量的最大原因 - 以及变量和函数。但是,有一些有效的用例,其中全局定义是有意义的。
在大多数情况下,常量属于某种东西。那个东西是一个类,值得在课堂上定义常量。
如果你定义一个具有长前缀的常量(例如VALIDATOR_EMAIL_PATTERN),它是可能的类相关常量定义的标志(Validator \ Email :: PATTERN)
全局定义有更多机会发生冲突,从而使代码的某些部分难以重复使用,因为两个不同的库可能会尝试为我们的目的定义具有相同名称的常量。