时间:2021-07-01 10:21:17 帮助过:18人阅读
如图所示
为什么要再给Areturn这个类再次定义一个json属性呢? 这个属性就是"json"这个字符串,为什么不直接引用呢?
在我见过的别人封装的类中,此种例子比比皆是,为什么呢?
再例如这个
这个
这个给我的感觉就是有毛病 定义了这么些常量有什么用处!!!! 直接一个字符串比较不好么?
我的同事说,大牛的做法总有其道理,来个大牛告诉我这是为什么?
如图所示
为什么要再给Areturn这个类再次定义一个json属性呢? 这个属性就是"json"这个字符串,为什么不直接引用呢?
在我见过的别人封装的类中,此种例子比比皆是,为什么呢?
再例如这个
这个
这个给我的感觉就是有毛病 定义了这么些常量有什么用处!!!! 直接一个字符串比较不好么?
我的同事说,大牛的做法总有其道理,来个大牛告诉我这是为什么?
防止今后修改字面量的时候,有重复劳动。
在类内定义 CONST 常量之后,在其他地方调用只需要用这个常量就可以了,如果要修改的话,只需要修改一处即可。
请学习一下有关代码重构的知识。
何为常量,就是在你以后程序运行时,不会被修改的值。配置一类的数据作为常量是合理的。且可读性高,更易维护。
如果有一天你突然发现常量的值不合理,需要修改,这时只需要改一处地方就好,更加简单模块化。
这跟PHP无关,常量在不同语言不同平台都会用到。
以上
为了可读性吧,但这样会降低性能,因为要到查两次符号表
第一张图里面那个有点多余, 可以直接使用 "json", 猜测定义了常量的好处是进行了限制, 比如有人不清楚的情况下会写 "JSON"
第二张图 使用了定义之后, 是让人望文生义, 不然全是数字, 以后你自己看也不知道这些数字是干嘛用的
1、对数字定义常量有助于阅读
if ($count > 20)
if ($count > MAX_POST)
2、对重构友好,只要修改一下常量,所有地方都改到了,否则你要到处去找20改成30
3、文字常量对错误友好
define('FOOBAR', 'foobar');
fn(FOOBAZ); // 错误,常量不存在
fn('foobaz'); // 除非fn里面去检查参数是否等于foobar,否则拼写错误不会在编译阶段提示
最后,啥都有个度,控制度是个经验问题
很简单,所有编程语言里都会遇到的情况。
定义一个常量或是宏。
1、从代码语义上可以使代码可读性提高,比如写TINKINGIMAGE_GD
总是比写 1 要好读,而且不容易出错
2、万一需要修改这个常量,只改一处就好了
比如,将来万一“json”要都改成“json v2.0”。
1、提高可读,例如NEWS::STATUS_DETETED 就是删除的了
2、IDE自动提示
3、方便修改
亲身经历:
以前正常状态值为0,散落在程序的各个角落,之后为了状态表示方式与其他系统模型统一,要改成1为正常。
花了很长时间(好几个小时,事后几天还零星碰到没找到的)。如果你定义了常量则不必这样。