【发布时间】:2014-01-20 20:58:32
【问题描述】:
原来是这样的:
我想使用一个类 3rd 方库(即Poco)来解析一个 JSON 字符串。这个Parser 类的设计方式是,在每次解析(操作)之后,它必须被重置(通过调用reset(),谁会想到呢?)。我在我正在实现的类中的不同位置多次重复使用Parser,因此这对我很重要。即使类已经重置,调用reset() 也是无害的。
因此我的问题是:我应该确保在每次操作之前重置解析器,还是应该确保在操作之后重置解析器。
第一种情况很方便,因为它保证了我的解析器在运行之前处于正确的状态,但同时我觉得很脏,因为我让解析器处于无效状态,其他人可能会认为我重置了解析器。
我不喜欢第二种情况,因为我担心我可能会错过我的方法可能退出的情况(例如未捕获的异常),使解析器处于无效状态,而其他人希望它这次肯定有效。当然,这可以通过使用 RAII(如作用域锁)来解决,但这对我来说听起来有点过度设计。
另一种解决方案是结合这两种情况,因此:重置、解析并再次重置;但这是一种多余的 IMO。
我在这里真的不确定,无法决定任何这些情况,我希望您的意见(基于与设计相关的考虑,不要关闭我的问题!;))将帮助我选择。
【问题讨论】: