代码写着写着发现了一个好用的模式:(其实算是很简单的一个小经验吧) 如果你遇到个这样的情况:需要对 a 进行一系列处理和判断,并且同步的用 a 处理过程中的数据处理 b ,还要是如果 a 在某一步处理后的结果不符合条件时就要放弃对 b 的处理(让 b 恢复原样) 然后,你就可以这样做, 你可以先写只对 a 进行处理和判断而不同时对 b 进行处理,把不符合条件的 a 的情况都提前 return 掉,之后再写对 b 的具体处理。当然,由于处理 b 还是要用 a 处理过程中的数据,所以对 a 还要再重复处理一遍。
这样虽然有部分代码(处理)是重复的,但是可以预先把 a 可能不符合的情况都过滤掉,在后面处理 b 的时候就不会因为在 a 某一步处理后的结果不符合条件而又要把 b 进行“回滚”处理了。
对了,这里的 b 不是一个简单的可以提前缓存的数据,而是类似于一系列文件删改或者数据库处理这种情况,而 a 则是可以重复处理的数据。