- 主题:一个封得巨烂但被大量调用的函数,有啥妙招重构不?
这个返回的字符串其实包含了跟调用者约定的协议。要改,只能跟调用者一起改。
这个函数的问题主要是把真正的返回值跟错误信息编码在一起了。
用个tuple,或者写个专门包装返回信息的类
template<class T>
class ReturnInfo
{
public :
T value;
int ret_code;
string ret_message;
}
原来的函数返回ReturnInfo<string> ,这样就很清晰。
但是必然要改调用者的代码。
【 在 z16166 的大作中提到: 】
: 两个字:巨烂
: 1、把成功字符串和拼凑的错误原因字符串放在同一个返回值里;
: 2、有两三百处调用这个函数,到处都要改调用代码;
: ...................
--
FROM 223.72.62.*
或者直接抛出异常,
在调用者更高的层级拦截处理。这样可以跳过调用函数里面的错误处理逻辑。
【 在 z16166 的大作中提到: 】
: 两个字:巨烂
: 1、把成功字符串和拼凑的错误原因字符串放在同一个返回值里;
: 2、有两三百处调用这个函数,到处都要改调用代码;
: ...................
--
FROM 223.72.62.*
楼主说了啊,调用者拿到返回值,要一个一个if来判断里面是什么。
按照特定的字符串来判定是什么错误。
找不到预定的错误,就是正常的返回值。
之前应该约定了正常返回值不会出现约定的错误信息标志。
【 在 ziqin 的大作中提到: 】
: 关键看caller拿到返回值怎么用吧,都不知道caller怎么用的,没法改啊
--
FROM 223.72.62.*