他们
把add封装为
if(!add(...)) set(...);把replace封装为
if(!replace(...)) set(...);把increment封装为
if(!increment(...)) set(...);
现在,所有的操作都不会返回false了,使用者可以无脑的调用,不用做任何返回值的检测。
只是,当他们真的需要add, replace, increment的语义时,他们怎么办?
这个你不用当心,劳动人民的智慧是无穷的:
我曾经见过一个更奇葩的,他把set封装为
if(!get(...)) add(...);
else replace(...);按照同样的思路,当他们真的需要add, replace, increment时,会先用get检测一下。
本文讨论了一种常见的封装技巧,即将失败情况通过设置默认值来避免返回false,但这可能导致原本的操作语义丢失。为了弥补这一点,开发者们又发明了新的检测手段,如使用get来判断是否需要执行add等操作。
245

被折叠的 条评论
为什么被折叠?



