网站改版升级总结,苏州市住建局官网,WordPress建站 用插件,互联网培训学校哪个好某个函数既返回对象状态值#xff0c;又修改对象状态 重构#xff1a;建立两个不同的函数#xff0c;其中一个负责查询#xff0c;另一个负责修改
动机 如果某个函数只是向你提供一个值#xff0c;没有任何看得到的副作用#xff0c;那么这是个很有价值的东西。 你可以任…某个函数既返回对象状态值又修改对象状态 重构建立两个不同的函数其中一个负责查询另一个负责修改
动机 如果某个函数只是向你提供一个值没有任何看得到的副作用那么这是个很有价值的东西。 你可以任意调用这个函数也可以把invoke搬到函数的其他地方。 明确表现出“有副作用”与“无副作用”两种函数之间的差异是个很好的想法。下面是一条好规则任何有返回值的函数都不应该有看得到的副作用。 什么是“看得到的副作用”有一种常见的优化方法将查询所得结果缓存于某个字段中这么后续的重复查询就可以大大加快速度。虽然这种做法改变了对象的状态但这种修改是察觉不到的因为不论如何查询你总是获得相同结果。 并发问题 如果在一个多线程系统中一个惯用手法在同一个动作中完成检查和赋值。这是否和Separate Query from Modifier 互相矛盾呢两者并不矛盾但你需要做一些额外工作。你需要保留第三个函数来同时做两件事。这个“查询-修改”函数将调用各自独立的查询函数和修改函数并声明synchronized。