今天早些时候我在尝试重构一些代码时遇到了一个有趣的情况。返回值是一个字符串,然后在调用类方法中进行比较。
字符串比较很昂贵我发现返回值可能是一个布尔值,但是如果发生异常,该字符串也可以用于日志记录。
所以我的选择之一是将功能作为
bool result = a.f(&status_string, other_args);
然后使用 status_string。
第二种选择:
std::pair<bool, string> result = a.f(other_args);
还有第三种选择:
bool result = a.f(other_args) and then query for `a.get_status()` for the message.
其中哪一个是最优雅的解决方案?或者可能将回调传递给a.f
viaboost::bind
并将该回调传递给字符串,但随后代码不再松散耦合。