首页 > PHP中一些奇怪的写法!这是为什么?

PHP中一些奇怪的写法!这是为什么?

如图所示
为什么要再给Areturn这个类再次定义一个json属性呢? 这个属性就是"json"这个字符串,为什么不直接引用呢?

在我见过的别人封装的类中,此种例子比比皆是,为什么呢?
再例如这个

这个
这个给我的感觉就是有毛病 定义了这么些常量有什么用处!!!! 直接一个字符串比较不好么?
我的同事说,大牛的做法总有其道理,来个大牛告诉我这是为什么?


  1. 第一张图里面那个有点多余, 可以直接使用 "json", 猜测定义了常量的好处是进行了限制, 比如有人不清楚的情况下会写 "JSON"

  2. 第二张图 使用了定义之后, 是让人望文生义, 不然全是数字, 以后你自己看也不知道这些数字是干嘛用的


很简单,所有编程语言里都会遇到的情况。

定义一个常量或是宏。
1、从代码语义上可以使代码可读性提高,比如写TINKINGIMAGE_GD总是比写 1 要好读,而且不容易出错
2、万一需要修改这个常量,只改一处就好了
比如,将来万一“json”要都改成“json v2.0”。


1、提高可读,例如NEWS::STATUS_DETETED 就是删除的了
2、IDE自动提示
3、方便修改

亲身经历:
以前正常状态值为0,散落在程序的各个角落,之后为了状态表示方式与其他系统模型统一,要改成1为正常。
花了很长时间(好几个小时,事后几天还零星碰到没找到的)。如果你定义了常量则不必这样。


防止今后修改字面量的时候,有重复劳动。

在类内定义 CONST 常量之后,在其他地方调用只需要用这个常量就可以了,如果要修改的话,只需要修改一处即可。

请学习一下有关代码重构的知识。


  1. 何为常量,就是在你以后程序运行时,不会被修改的值。配置一类的数据作为常量是合理的。且可读性高,更易维护。

  2. 如果有一天你突然发现常量的值不合理,需要修改,这时只需要改一处地方就好,更加简单模块化。

  3. 这跟PHP无关,常量在不同语言不同平台都会用到。

以上


为了可读性吧,但这样会降低性能,因为要到查两次符号表


1、对数字定义常量有助于阅读

if ($count > 20)
if ($count > MAX_POST)

2、对重构友好,只要修改一下常量,所有地方都改到了,否则你要到处去找20改成30

3、文字常量对错误友好
define('FOOBAR', 'foobar');

fn(FOOBAZ); // 错误,常量不存在

fn('foobaz'); // 除非fn里面去检查参数是否等于foobar,否则拼写错误不会在编译阶段提示

最后,啥都有个度,控制度是个经验问题

【热门文章】
【热门文章】