代码写着写着发现了一个好用的模式:(其实算是很简单的一个小经验吧)
如果你遇到个这样的情况:需要对 a 进行一系列处理和判断,并且同步的用 a 处理过程中的数据处理 b ,还要是如果 a 在某一步处理后的结果不符合条件时就要放弃对 b 的处理(让 b 恢复原样)
然后,你就可以这样做,
你可以先写只对 a 进行处理和判断而不同时对 b 进行处理,把不符合条件的 a 的情况都提前 return 掉,之后再写对 b 的具体处理。当然,由于处理 b 还是要用 a 处理过程中的数据,所以对 a 还要再重复处理一遍。
这样虽然有部分代码(处理)是重复的,但是可以预先把 a 可能不符合的情况都过滤掉,在后面处理 b 的时候就不会因为在 a 某一步处理后的结果不符合条件而又要把 b 进行“回滚”处理了。
对了,这里的 b 不是一个简单的可以提前缓存的数据,而是类似于一系列文件删改或者数据库处理这种情况,而 a 则是可以重复处理的数据。
1
hrong 2015-12-03 09:04:13 +08:00
感觉楼主说得如啰嗦。无非就是要不要涉及到数据库的情况了。
如果不涉及数据库操作,数据完整整约束就在你程序内控制,这个最好办了,你用多线程(或多线程的框架)来保持协同是最好不过的,不用像在帖子里说得那么复杂吧。 如果涉及数据库操作,还是要用事务吧。更复杂一点。 |
2
zhangbohun OP @hrong 主要不是数据库操作,就是想说 b 是个不能简单保存原先状态的东西,不一定是数据库,也可能是多次新建删除文件或者发送接受数据的事
|
3
kanezeng 2015-12-03 13:04:59 +08:00
嗯,单说这种模式,为什么不在对 a 进行处理和判断的时候,把后面需要用到的数据存下来呢?这样后面就不用再重复处理了啊?
|